Help with Fortran90
This page is dedicated to conversation and mutual help on creating Neptunian satellite ephemeris using Le Guyader's and Jerome Berthier's ftp://ftp.imcce.fr/pub/ephem/satel/neptuno/
First approach: f77
In Config.mk replace FC = xlf with FC = f77 and type 'make'. You will see lots of errors like
isat_d.f: In subroutine `isatd': isat_d.f:1353: 210 format(8x,' Dernier pas:',d23.16)' ^ Invalid form for FORMAT statement at (^)
In my opinion the reason is that the code is not FORTRAN77 conform. I tried to overcome this problem by fixing the source code, there is an awful lot of wrong format statements. For finding the input files I changed in fs2fd.f:
infile = trim(dir_s)//trim(fil_s) outfile = trim(dir_d)//trim(fil_d)
infile = './data/Nsat-fs.dat' outfile = './data/Nsat-fd.dat'
Same in ins_d.f:
theofile = './data/Nsat-fd.dat'
Additionally in ins_d.f I had to move the passage
LOGICAL FIRST DATA FIRST/.TRUE./
after the COMMON block:
COMMON/STCOMX/KM,BARY,PVSUN LOGICAL FIRST DATA FIRST/.TRUE./
FORTRAN77 seem not to support variable size arrays, so in isat_d.f I had to replace
in line 183 with
The same for lines 2455 and 2456. In line 2408 I removed the definition of w(3,np,0:nd). After that the source compiled into an executable called 'ilgs_d', which is ought to be the double precision version. The quad precision version would be called 'ilgs_q'. Anyway, the executable failed with the following output:
________________________________________ Fichier ./data/Nsat-fd.dat ________________________________________ open: No such file or directory apparent state: unit 12 named /DATA/DE403/de403.unx last format: list io lately reading direct unformatted external IO Aborted
Second approach: f2c
Using f2c gives the same results as using f77. I hoped to get more insight from reading the C-code, but I did not. I had big success for the other IMCCE fortran programs with f2c, it helped me a lot in understanding and getting functional executables. But not this time.
The file ./data/Nsat-fd.dat exists, maybe the error refers to the file /DATA/DE403/de403.unx, which is indeed missing on my system. And I do not know from where to get it. At ftp://ssd.jpl.nasa.gov/pub/eph/planets/bsp/DE403.BSP I found the file for Sparc architecture, for i386 it seems not to be available any more, but it could be created from DE403.BSP.
But before doing further investigation I would like to ask a FORTRAN programmer about this software. My understanding is as follows, please correct me when I am wrong:
1) The software is a numerical integrator for a physical model of the Nepunian system. For as a period as long as the planet positions are provided, the Neptunian satellites position can be computed by numerical integration. Especially dates outside the interval 1800-2050 are no problem, when the DE403 planet positions are replaced by VSOP87 or similar.
2) Therefore it is possible to produce a large table of each satellites position and velocity for a long period, lets say 1500-2500. In fact this is the main goal. When I have this table, I will try frequency analysis techniques in order to create poisson series or similar, that can be included into stellarium.
My problem is that I can speak neigther french nor FORTRAN, so I really do not know what is going on in this software, and I would really appreciate your help. You can contact be by:
- email: johannes (dot) gajdosik (at) gmx (dot) at
- posting into the forum
- writing something in this wiki page
If you do not mind I would prefer to be contacted by email, please write the words "stellarium" and "fortran" into the subject line.
Johannes 14:38, 1 May 2007 (PDT)
Hi! I'm a french programmer, but unfortunately not a fortran programmer, and I'd like to help if I can . I've started to read fortran tutorial and I plan to test lf95 trial as fortran compiler since it's the one used in the linux Config.mk provided in neptuno package but I don't have much free time these days. I'll let know if I succeed in any way, let me know if you have questions. Blakbear.
Hello Blackbear, thank you very much for offering help! I first did not see your writing into the wiki, because the "watch" function seems not to work for me. If you get any insight into the code, or if you can give any answers to 1) or 2) please send me an email, this will be the easiest way of communication. Johannes
Hi, Johannes. I could build "ilgs3_d" by g77 and execute without error. But I could not investigate that result is correct or is not correct. Shall I report my procedure?(in this page? or e-mail?) I write a part of output(little formatted), instead answer your questions.
( 1) Date: 0.2378496500000000E+07 Nombre maximum d"enregistrements = 22829 Intervalle cherché = 1 Temps initial d"intégration = 0.2378496500000000E+07 Intervalle d"intégration = 0.0000000000000000E+00 Pas d"intégration = 0.0000000000000000E+00 Temps final d"intégration = 0.2378496500000000E+07 ___________________________________________________ Résultats ---------- Triton ( 1) Date: 0.2378496500000000E+07 v0(1,1,0) =-0.2019388268736855E-04 v0(2,1,0) = 0.1722904160856275E-02 v0(3,1,0) = 0.1629414715885055E-02 v0(1,1,1) = 0.2533936570868142E-02 v0(2,1,1) =-0.4058902541155617E-04 v0(3,1,1) = 0.7430677191550270E-04
By the way, when create de403.unx, why did not you convert from unxpXXXX.403 or ascpXXXX.403?--Sigma 06:10, 9 May 2007 (PDT)