Discussion:
[f2py] errors in reading fortran codes in python
Happyman
2013-01-11 09:51:15 UTC
Permalink
Dear F2PY users

I am a newbie in f2py.

I have the problem with reading fortran code. Let me describe it. I did the following steps:
1) I opened python 2.7
2) Spererately, in another window I created the following code in notepad:

c***************************************************************************

SUBROUTINE INDREF (lam,tem,zm)
c***************************************************************************
c ce programme calcule l indice de refraction complexe ZM de gouttes
c d eau spheriques pour la longueur d onde LAM et la temperature
c TEM
c
c d apres le modele de PETER S. RAY
c "Broadband complex refractive indexes of ice and water"
c Applied Optics, Vol 11, no 8, August 1972
c***************************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
parameter(n1=250,n2=250)
c n1:nombre maximum de donnees,
c n2:nombre maximum de parametres,
real*8 lam,lams
real*8 num1,num2
complex*8 zm
data pi/3.14159/
c coefficients de epss
data cs0,cs1,cs2,cs3,cs4/78.54,25.0,-4.579e-3,1.19e-5,-2.8e-8/
c coefficients de epsinf
data cinf0,cinf1,cinf2/5.27137,0.0216474,-0.00131198/
c coefficients de alpha
data cal0,cal1,cal2/-16.8129,273.,0.0609265/
c coefficients de lams
data cls1,cls2,cls3/0.00033836,2513.98,273./
c coefficients du terme additif de epsi
data sigma,cad2/12.5664e8,18.8496e10/
c calcul des parametres epss,epsinf,alpha,lams
dt=tem-cs1
epss=cs0*(1.0+cs2*dt+cs3*dt*dt+cs4*dt*dt*dt)
c write(ito,*)'dt,epss ',dt,epss
epsinf=cinf0+cinf1*tem+cinf2*tem*tem
c write(ito,*)'epsinf ',epsinf
alpha=cal2+cal0/(tem+cal1)
c write(ito,*)'alpha ',alpha
lams=cls1*exp(cls2/(tem+cls3))
c write(ito,*)'lams ',lams
c calcul des parties reelle (epsr) et imaginaire (epsi)
c de l indice de permittivite
raplam=lams/lam
c write(ito,*)'raplam ',raplam
arg=alpha*pi/2
c write(ito,*)'arg ',arg
exp1=1-alpha
exp2=2*exp1
c write(ito,*)'exp1,exp2 ',exp1,exp2
deno=1+2*raplam**exp1*sin(arg)+raplam**exp2
num1=(epss-epsinf)*(1+raplam**exp1*sin(arg))
num2=(epss-epsinf)*raplam**exp1*cos(arg)
tad2=sigma*lam/cad2
c write(ito,*)'deno,num1,num2,tad2 ',deno,num1,num2,tad2
epsr=epsinf+num1/deno
epsi=num2/deno+tad2
c write(ito,*)' lam,tem,epsr,epsi ',
c + lam,tem,epsr,epsi
c calcul des parties reelle (nr) et imaginaire (ni)
c de l indice de refraction
delta=16*(epsr*epsr+epsi)
rac1=(4*epsr+sqrt(delta))/8
c rac2=(4*epsr-sqrt(delta))/8
rac1=sqrt(rac1)
rac2=-epsi/(2*rac1)
c write(ito,*)'rac1,rac2 ',rac1,rac2
zm=cmplx(rac1,rac2)

return
end

and I saved it like format   *.f

3) I tried to read it in python. But it is failed.. Any answers are appreciated!


 




 
David Ochoa
2013-01-14 01:19:19 UTC
Permalink
Hi!

For newbies (what is f2py? and how it can be easily used?) recommend two
sites:
From the University of Cambridge:
http://www.ucs.cam.ac.uk/docs/course-notes/unix-courses/pythonfortran
From the Center for Non Linear Studies:
http://cens.ioc.ee/projects/f2py2e/usersguide/index.html

I'm not related anyway to those, but i did find them very useful when i
started using f2py.

David O.
Post by Happyman
Dear F2PY users
I am a newbie in f2py.
I have the problem with reading fortran code. Let me describe it. I did
1) I opened python 2.7
c***************************************************************************
SUBROUTINE INDREF (lam,tem,zm)
c***************************************************************************
c ce programme calcule l indice de refraction complexe ZM de gouttes
c d eau spheriques pour la longueur d onde LAM et la temperature
c TEM
c
c d apres le modele de PETER S. RAY
c "Broadband complex refractive indexes of ice and water"
c Applied Optics, Vol 11, no 8, August 1972
c***************************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
parameter(n1=250,n2=250)
c n1:nombre maximum de donnees,
c n2:nombre maximum de parametres,
real*8 lam,lams
real*8 num1,num2
complex*8 zm
data pi/3.14159/
c coefficients de epss
data cs0,cs1,cs2,cs3,cs4/78.54,25.0,-4.579e-3,1.19e-5,-2.8e-8/
c coefficients de epsinf
data cinf0,cinf1,cinf2/5.27137,0.0216474,-0.00131198/
c coefficients de alpha
data cal0,cal1,cal2/-16.8129,273.,0.0609265/
c coefficients de lams
data cls1,cls2,cls3/0.00033836,2513.98,273./
c coefficients du terme additif de epsi
data sigma,cad2/12.5664e8,18.8496e10/
c calcul des parametres epss,epsinf,alpha,lams
dt=tem-cs1
epss=cs0*(1.0+cs2*dt+cs3*dt*dt+cs4*dt*dt*dt)
c write(ito,*)'dt,epss ',dt,epss
epsinf=cinf0+cinf1*tem+cinf2*tem*tem
c write(ito,*)'epsinf ',epsinf
alpha=cal2+cal0/(tem+cal1)
c write(ito,*)'alpha ',alpha
lams=cls1*exp(cls2/(tem+cls3))
c write(ito,*)'lams ',lams
c calcul des parties reelle (epsr) et imaginaire (epsi)
c de l indice de permittivite
raplam=lams/lam
c write(ito,*)'raplam ',raplam
arg=alpha*pi/2
c write(ito,*)'arg ',arg
exp1=1-alpha
exp2=2*exp1
c write(ito,*)'exp1,exp2 ',exp1,exp2
deno=1+2*raplam**exp1*sin(arg)+raplam**exp2
num1=(epss-epsinf)*(1+raplam**exp1*sin(arg))
num2=(epss-epsinf)*raplam**exp1*cos(arg)
tad2=sigma*lam/cad2
c write(ito,*)'deno,num1,num2,tad2 ',deno,num1,num2,tad2
epsr=epsinf+num1/deno
epsi=num2/deno+tad2
c write(ito,*)' lam,tem,epsr,epsi ',
c + lam,tem,epsr,epsi
c calcul des parties reelle (nr) et imaginaire (ni)
c de l indice de refraction
delta=16*(epsr*epsr+epsi)
rac1=(4*epsr+sqrt(delta))/8
c rac2=(4*epsr-sqrt(delta))/8
rac1=sqrt(rac1)
rac2=-epsi/(2*rac1)
c write(ito,*)'rac1,rac2 ',rac1,rac2
zm=cmplx(rac1,rac2)
return
end
and I saved it like format *.f
3) I tried to read it in python. But it is failed.. Any answers are appreciated!
_______________________________________________
f2py-users mailing list
http://cens.ioc.ee/mailman/listinfo/f2py-users
Loading...