Format for absorption cross-sections since GEISA-2015
1. Filename
In the spectral range WnMin – WnMax (cm-1). A compressed cross-section file is named “xxxx_rrrr_[yyyy]_tttt_pppp.asc.gz” where :
- xxxx represent the name of the molecule,
- rrrr the resolution in cm-1,
- yyyy the reference(s),
- tttt the temperature,
- pppp the pressure.
Example of a file name : cfc-14_00.01_[19]_216.00_005012.93.asc.gz
2. Header :
The nine first lines of each file define the header describing data parameters.
Parameter | Molecule | Temp | Pressure | Resol | Ref | Nbline | WnMin | WnMax |
Fortran descriptor (values) | A20 | F6.2 | F9.2 | F8.4 | A15 | I9 | F11.4 | F11.4 |
Undefined values | -99999.99 | -9.99 |
2.Data format :
For a given molecular species, each file describe absorption cross-section data corresponding to :
- a given temperature in K,
- a given pressure in Pa (which could be unknown),
- – a given resolution in cm-1 or nm (which could be unknown),
- some references.
Parameter | Wavenumber (cm-1) |
Absorption cross-section (cm2 mol-1) |
Field length | 13 | 11 |
Fortran descriptor | F13.6 | E11.3 |
To see how to read the GEISA-2015 cross-section sub-database : read_geisa_Xcross_G15.f90
program read_geisa_Xcross_G15 ! read the GEISA-2015 x-sections database ! compilation without specific options : ifort read_geisa_Xcross_G15.f90 -o read_geisa_Xcross_G15 ! run : read_geisa_Xcross_G15 file_geisa_x-sections1, file_geisa_x-sections2, ... ! integer nbr_pts real wavenb, intensite real T,P,resol,wavenb_min,wavenb_max character*1 a1 character*15 reference character*20 molecule character*250 file_geisa_Xcross nbfich=iargc() do ifich=1,nbfich call getarg(ifich,file_geisa_Xcross) write(*,*) 'reading '//TRIM(file_geisa_Xcross)//' ...' open(10,file=file_geisa_Xcross,form='formatted',status='old') read(10,*) read(10,*) read(10,*) read(10,*) read(10,*) read(10,*) a1,molecule,T,P,resol,reference,nbr_pts,wavenb_min,wavenb_max write(*,'(A,1x,f6.2,1x,f9.2,1x,f8.4,A,i9,2f11.4)') molecule,T,P,resol,reference,nbr_pts,wavenb_min,wavenb_max read(10,*) read(10,*) read(10,*) do icpt=1,nbr_pts read (unit=10, fmt=*, IOSTAT=ios) wavenb, intensite if(icpt.eq.1) write(*,*) 'first point',wavenb, intensite if(icpt.eq.nbr_pts) write(*,*) 'last point',wavenb, intensite enddo enddo end