IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

programmation sur fortrant


Sujet :

Fortran

  1. #1
    Candidat au Club
    Femme Profil pro
    ingénieur
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut programmation sur fortrant
    bonjour j'ai un programme en mathématica et je dois le convertir en fortrant . du coup j'ai un problème du programmer une discrétisation sur le fortrant est ce vous avez une idée ?
    merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut,
    On aura du mal à te répondre. Montre au moins le fichier Mathematica.

  3. #3
    Candidat au Club
    Femme Profil pro
    ingénieur
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut programmation en fortrant
    (* DONNEES GENERALES *)

    name = "ColE #9";
    zmax = 250; (* Profondeur maximale de la simulation \
    (mm)*)
    tend = 3; (* temps total de la \
    simulation (h)*)
    zcol = 246.7; (* Profondeur de la colonne \
    (mm)*)
    ts = 1; (* durée de l'infiltration (h)*)
    h = 25; (* pas d'espace (mm)*)
    \[Tau] = 0.005; (* pas de temps (h)*)

    S = 16733.06; (* surface colonne (mm^2)*)
    puissance = 2;

    (* DONNEES CONCERNANT LE MODELE KDW EAU *)

    u0 = 0.001; (* intensité du flux \
    d'eau initial dans la colonne (mm/h)*)
    us = 19.5; (* intensité du flux d'eau imposé à \
    la surface (mm/h)*)

    a = 1.8; (*1.55*)
    b = 10^4.5; (*10^3.8*)
    \[Nu] = 40; (*40*)


    p1 = b^(1/a); p2 = a b^(1/a); q = (a - 1)/a;

    (* CALCUL DES VECTEURS TEMPS ET ESPACE *)

    time = Table[j, {j, 0, tend, \[Tau]}];
    z = Table[i, {i, 0, zmax, h}];
    test1 = Abs[ts - time];
    tf = First[Flatten[Position[test1, Min[test1]]]];
    test2 = Abs[zcol - z];
    zf = First[Flatten[Position[test2, Min[test2]]]];
    ZM = Length[z];
    TM = Length[time];


    (* DECLARATION VECTEURS ET MATRICES *)
    (* concernant le flux u[i,j] *) \
    \
    \
    \
    \
    \
    \
    \
    \
    \
    \
    \
    \
    \
    \


    U = Array[u, {ZM + 1, TM + 1}, {0, 0}];
    P0 = Array[op0, {ZM + 1}, {0}];

    ;
    TP1 = Array[temp1, {ZM + 1}, {0}];

    (* CONDITIONS INITIALES ET AUX LIMITES *)
    (* Sur le flux u[i,j] *)
    Do[u[i, 0] = u0, {i, 0, ZM + 1}];
    Do[Which[0 <= j <= tf, u[0, j] = us, tf < j <= TM ,
    u[0, j] = u0], {j, 0, TM}];

    (* DEFINITIONS *)

    speed[x_] := p (x)^q;


    (* CALCUL DU FLUX D'EAU u[i,j] *)


    Do[
    (*Print["time= ",j];*)
    Do[temp0[i] = u[i, j], {i, 0, ZM}];
    Do[ If[(temp0[i] < us) && (j > tf), p = p2, p = p1];
    c0[i] = speed[ temp0[i]], {i, 0, ZM}];

    diag[1] = 1;(*diag*)
    surdiag[1] = 0; (*surdiag*)

    Do[
    diag[i] = 1 + (2 \[Nu] c0[i - 1] \[Tau])/h^2;(*diag*)

    sousdiag[i - 1] =
    c0[i - 1] \[Tau] (-(1/(2 h)) - \[Nu] /h^2);(*sousdiag*)

    surdiag[i] = c0[i - 1] \[Tau] (1/(2 h) - \[Nu] /h^2);(*surdiag*)

    , {i, 2, ZM}];

    diag[ZM + 1] = 1;(*diag*)
    sousdiag[ZM] = 0;(*sousdiag*)

    DIAG = Table[diag[i], {i, 1, ZM + 1}];
    SOUSDIAG = Table[sousdiag[i], {i, 1, ZM}];
    SURDIAG = Table[surdiag[i], {i, 1, ZM}];
    Print[DIAG];
    matrice =
    SparseArray[{Band[{1, 2}] -> SOUSDIAG, Band[{1, 1}] -> DIAG,
    Band[{2, 1}] -> SURDIAG}, ZM + 1];

    TP1 = LinearSolve[matrice, TP0];


    ClearAll[DIAG, diag, SOUSDIAG, sousdiag, SURDIAG, surdiag];

    Do[
    u[i - 1, j + 1] = TP1[[i]]
    , {i, 2, ZM}
    ];


    u[ZM, j + 1] = u[ZM - 1, j + 1];

    , {j, 0, TM - 1}];

    (*
    << PlotLegends`;
    << Graphics`Graphics`;*)

    (*$TextStyle={FontFamily->"Times",FontSize->16};*)


    test3 = zcol - z;
    Clear[up];
    Clear[uc];
    Clear[ud];

    (*<< LinearAlgebra`MatrixManipulation`;*)
    iup = First[Flatten[Position[Negative[test3], True]]];
    Print["iup", iup];
    idown = iup - 1;
    Print["idown", idown];
    zup = z[[iup]];
    Print["Ziup", zup]
    zd = z[[idown]];
    Print["Zidown", zd]
    (*up=TakeRows[U,{iup,iup}];
    ud=TakeRows[U,{idown,idown}];*)
    up = Take[U, {iup, iup}];
    ud = Take[U, {idown, idown}];
    uc = Flatten[
    ud*((zup - zcol)/(zup - zd)) + up*((zcol - zd)/(zup - zd))];




    dat = Import["/Users/emichel/Desktop/Colonne E#9.txt", "Table"] ;

    (*<< LinearAlgebra`MatrixManipulation`;
    <<Statistics`DescriptiveStatistics`;
    ttu=TakeColumns[dat,{1}];
    qq=TakeColumns[dat,{2}];
    lttu=Length[ttu];
    hyd=AppendRows[ttu,qq];
    *)

    (*
    ttu=dat[[All,1]];
    qq=dat[[All,2]];
    lttu=Length[ttu];
    hyd=Append[ttu,qq];
    *)
    (* Calcul du RMSE *)
    (*
    << LinearAlgebra`MatrixManipulation`;
    Do[

    ttu1= Table[ttu[[j]],{i,1,TM}];

    test=ttu1-time;

    iap=First[Flatten[Position[Negative[test],True]]];
    iav=iap-1;tap=time[[iap]];tav=time[[iav]];
    uap=uc[[iap]];uav=uc[[iav]];

    mat=(tav uav
    tap uap

    );
    inte=Interpolation[mat,InterpolationOrder->1];
    ues[j]=inte[ttu[[j]]];

    ,{j,1,lttu}];(*ues[1]=u0;*)

    ues1=Table[ues[i],{i,1,lttu}];

    Y=(Abs[ues1-qq])^puissance;

    (*<<Statistics`DescriptiveStatistics`;*)

    Minimum=Mean[Flatten[Y]]*100/Mean[Flatten[qq]];
    *)

    fg1 = ListPlot[dat, Prolog -> AbsolutePointSize[4],
    AxesOrigin -> {0, 0},
    AxesLabel -> {"Time (h)",
    "u (mm.\!\(\*SuperscriptBox[\(h\), \(-1\)]\))"},
    PlotLabel -> name, DisplayFunction -> Identity];

    gg1 = Table[{time[[j]], uc[[j]]}, {j, 1, TM}];

    fg2 = ListPlot[gg1, PlotJoined -> True,
    PlotStyle -> {RGBColor[1, 0, 0], Thickness[0.002]},
    AxesOrigin -> {0, 0},
    AxesLabel -> {"Time (h)",
    "u (mm.\!\(\*SuperscriptBox[\(h\), \(-1\)]\))"},
    DisplayFunction -> Identity];

    Print["MA = ", Minimum];
    Print["a = ", a];
    Print["b = ", b];
    Print["\[Nu] = ", \[Nu]];

    Show[fg1, fg2, DisplayFunction -> $DisplayFunction]
    Null

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Quel est précisément le problème ?

  5. #5
    Candidat au Club
    Femme Profil pro
    ingénieur
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut problème fortrant
    je sais pas comment convertir une discrétisation en fortrant est ce que vous pouvez m'aider

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 108
    Points : 74
    Points
    74
    Par défaut
    Salut , je fais les discrétisations sur Fortran90 . c'est à dire -je sais pas si j'arriverai à vous aider- lorsque vous avez un opérateur différentiel tel que Grad , Rot, ou tout simplement une dérivée spatiale d'une fonction F(x) ...et ben celle ci par exemple se traduit en discrétisation par un schéma différentiel avancé ou retardé d'ordre 1 ou plutôt centré d'ordre 2 (encore plus efficace) .

    D'une autre part si vous avez aussi une dérivée temporaire d'une fonction quelconque encore qu'on appelle G(t) qui s'introduit dans l'équation à discrétiser alors elle devient , après il y a beaucoup de schémas explicite et implicite .

    En fin de compte vous appliquez ces schéma à l'équation de départ pour les différents temps (itérations) pour obtenir un système souvent matriciel à résoudre .

    N.B: souvent le plus délicat c'est les formes que prennent cette équation de départ au instant de départ et aux bords .
    N.B: vous allez discrétiser en utilisant quelle méthode SVP? Volume finis Éléments Finis....?

    Citation Envoyé par IlhemADEL Voir le message
    je sais pas comment convertir une discrétisation en fortrant est ce que vous pouvez m'aider

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/01/2005, 11h36
  2. [Eclipse] Programmer sur un fond noir
    Par raj dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/12/2004, 10h15
  3. [Reseau] Execution de programmes sur un autre PC
    Par el3gans dans le forum Général Java
    Réponses: 5
    Dernier message: 18/11/2004, 11h20
  4. Methode de programmation sur des gros projets
    Par dynobremo dans le forum EDI
    Réponses: 10
    Dernier message: 08/06/2004, 02h59
  5. Déclenchement Programme sur Virtual Key
    Par Tom-G dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 09/05/2003, 12h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo