Bonjour,
J'utilise un logiciel de simulation éléments finis (ABAQUS si cela peut être pertinent) sous Linux et je rencontre un problème quand à l'utilisation de subroutines écrites en FORTRAN.
Pour essayer de rendre les choses aussi claires que possible, le logiciel en question effectue une simulation itérative dans le temps (càd que je lui demande de simuler un phénomène physique sur 100 secondes en calculant un état intermédiaire toutes les secondes).
À chaque itération de la simulation, ma subroutine relève une certaine variable d'état (par exemple une température) et s'en sert pour calculer une donnée d'entrée de l'itération suivante (par exemple la pression à appliquer à une certaine surface). Sur cette partie là pas de problème, la subroutine fait son travail.
Le hic c'est que je souhaiterais stocker cette donnée d'entrée dans un fichier texte à chaque incrément de manière à obtenir en fin de simulation l'évolution temporelle de cette donnée d'entrée sur les 100 secondes (et non, elle n'est pas disponible par défaut dans les outputs de la simulation elle-même).
Jusqu'ici j'ai réussi à écrire une instruction qui me permet d'écrire la donnée d'entrée dans un fichier texte, mais je me retrouve avec un fichier texte ne contenant que la donnée d'entrée à l'incrément en cours (donc en fin de simulation, la seule donnée d'entrée à l'état final).
J'ai essayé d'utiliser l'option de contrôle position="append" lorsque j'utilise la commande open mais il semblerait que soit le logiciel (ABAQUS) soit le compilateur FORTRAN (qui est apparemment un peu exotique mais dont je n'arrive pas à trouver la référence) ne supporte pas cette option de contrôle.
Mon problème est d'autant plus épineux que la boucle de calcul (l'incrémentation de 1 seconde jusqu'à 100 secondes) n'est pas contrôlée par ma subroutine (auquel cas j'aurais pu créer un vecteur de 100 lignes vide et demander à la subroutine de remplir la n-ième ligne avec la donnée d'entrée au n-ième incrément). Je précise toutefois que j'ai accès par différentes variables au numéro d'incrément courant et au temps de simulation courant (ce qui dans mon cas revient au même)
Histoire d'être un peu moins flou, voici l'instruction que j'utilise mais qui écrase mes données d'entrée précédentes pour ne arder que la donnée de l'incrément courant/finale :
OPEN(11, file="Fc.txt", ACCESS="sequential", status="old" )
DO
write(11,*) Fc, TIME(2) !TIME est un vecteur de dimension 2 et sa 2ème composante contient le temps courant
ENDDO
CLOSE(11)
Et quand j'ouvre Fc.txt à la fin j'ai une ligne :
85,6 100
(85,6 étant la valeur de Fc au 100ème incrément et 100 le temps en secondes)
Alors que je voudrais quelque chose comme :
0 0
0.25 1
1.5 2
0.6 3
.
.
.
85.6 100
Donc ma question est la suivante : avez vous une méthode à me proposer, autre que l'option position="append" dans la commande open, qui me permettrait de stocker l'évolution temporelle de Fc au cours de ma simulation?
Précisions : il semblerait que les options suivantes ne soient pas disponibles non plus :
Action=
Associatevariable=
Blocksize=
Buffercount=
Carriagecontrol=
Defaultfile=
Delim=
Dispose=
Extendsize=
Initialsize=
Key=
Maxrec=
Nospanblocks
Organization=
Pad=
Position=
Readonly=
Recordtype=
Shared=
Useropen=
Merci d'avance pour vos éventuelles réponses, et bonne soirée