J'ai un certain code dans fortran. Le code prend 'pq' comme une entrée de l'utilisateur et est un seul point. Au lieu de faire cela, je veux lire un ensemble de points 'pq' à partir d'un fichier points.txt et l'exécuter pour ce nombre de points au lieu d'une seule entrée utilisateur. C'est possible? Le code est le suivant:Appeler un sous-programme pour une liste de points au lieu d'un seul point
program prop
use module
implicit none
character(len=80) :: ErrorMsg
character(2) :: xy
real(8) :: Conc(20) = 0.d0
character(len=20) :: fn, fl
real(8) :: Mmolar, Tcritical, Pcritical, Tmininimum, Tmaximum, x, y
call Init_module()
write(*,*) 'Insert the gas name:'
read(*,*) fn
write(*,*) 'Insert the gas library:'
read(*,*) fl
write(*,*) 'Insert the copule pq:'
read(*,*) pq
write(*,*) 'Insert the value of ', pq(1:1)
read(*,*) x
write(*,*) 'Insert the value of ', pq(2:2)
read(*,*) y
write(*,*) 'Pres = ', Pres(pq, x, y, ErrorMsg)
write(*,*) 'Temp = ', Temperature(pq, x, y, ErrorMsg)
call ReleaseObjects()
end program prop
Au lieu de pq de lecture comme un seul point x, y de l'utilisateur dans le code ci-dessus, je veux lire un ensemble de points de file.txt, par exemple 50 points et puis exécutez les sous-programmes Pres et Temperature. Chaque ligne du fichier contient un point x, y et x et y dans chaque ligne sont séparés par quelques espaces. Les premières lignes de fichier.txt sont:
Ts
500
0.04781564 159.81587875
0.20396084 165.46398084
0.08159885 166.81382894
0.03879184 164.17497877
0.12585959 165.37000305
0.09895530 165.95997769
0.10389518 170.74235496
Il faut noter que la longueur et le signe des nombres flottants peuvent varier. Le fichier file.txt est écrit à l'origine via python avec la mise en forme pour x, y étant '%-12.8f %-12.8f\n'%
. Je le code suivant pour essayer de lire le fichier mais ne suis pas capable de lire à partir de la 3ème ligne partir:
real, allocatable :: x(:),y(:)
integer :: np
open(12,file=trim('file.txt'),status='old', &
access='sequential', form='formatted', action='read')
read(12,*)pq
write(*,*)'pq:', pq
read(12,*)np
write(*,*)'number of points:',np
allocate (x(np))
allocate (y(np))
do i=1,np
read(12,*)x(i),y(i)
write(*,*)x(i),y(i)
enddo
Vous pourriez savoir ce qu'ils appellent des boucles et des tableaux dans les langages de programmation modernes. Ce sont vos amis pour ce genre de choses. Mais entretemps 'module' est un mot-clé dans fortran 90 et plus, donc vous ne voulez pas nommer votre propre modulemodule. – innoSPG
@innoSPG Dûment noté. Cependant, je suis familier avec les tableaux et les boucles, je ne savais pas comment les implémenter pour fortran, je suis nouveau à fortran. Merci pour l'info. – Aspro