#DEFINITIONS: -*-sh-*- # # ARTS controlfile for calculating absorption cross sections. # created 2014-07-08 Arts2 { INCLUDE "general/general.arts" INCLUDE "general/continua.arts" INCLUDE "general/agendas.arts" # We do not want to calculate the Jacobian Matrix jacobianOff # Agenda for scalar gas absorption calculation Copy( abs_xsec_agenda, abs_xsec_agenda__noCIA ) # ----------------< Defining absorption species >------------------------------- # Select the molecule you are interested in: abs_speciesSet( species=["H2O-161"] ) ArrayOfIndexSet( abs_species_active, [0] ) # Line catalogue: Perrin or HITRAN abs_linesReadFromSplitArtscat( abs_lines, abs_species, "HitranSplit/", 180e9, 190e9 ) abs_lines_per_speciesCreateFromLines # Set the lineshape function for all calculated tags abs_lineshapeDefine( shape="Voigt_Kuntz6", forefactor="VVH", cutoff=-1 ) # ----------------< Atmospheric settings >-------------------------------------- # Dimensionality of the atmosphere AtmosphereSet1D # Setting the pressure, temperature and vmr VectorCreate( rtp_pressures ) VectorNLogSpace( rtp_pressures, 10, 0.01, 1000e2 ) # pressure in [Pa] NumericSet( rtp_temperature, 300 ) # temperature in [K] VectorSet( rtp_vmr, [1e-6] ) # volume mixing ratio (VMR), VectorSet( rtp_nlte, [] ) # Create a frequency grid VectorNLinSpace( f_grid, 100000, 163e+9, 203e+9 ) # isotop isotopologue_ratiosInitFromBuiltin( isotopologue_ratios ) # ----------------< Writing static output >------------------------------------- WriteXML( "ascii", f_grid, "results/f_grid.xml" ) WriteXML( "ascii", rtp_temperature, "results/temp.xml" ) WriteXML( "ascii", abs_species, "results/species.xml" ) WriteXML( "ascii", rtp_pressures, "results/press.xml" ) # ----------------< Calculating abs cross sections >---------------------------- # The abs cross sections are calculated in a for-loop for all pressures defined # in `rtp_pressures`. AgendaSet( forloop_agenda ){ # Extract pressure from Vector. Extract( rtp_pressure, rtp_pressures, forloop_index ) # Calculate absorption cross-sections. AbsInputFromRteScalars abs_xsec_agenda_checkedCalc abs_xsec_per_speciesInit abs_xsec_per_speciesAddLines # Write output files. WriteXMLIndexed( output_file_format = "ascii", file_index = forloop_index, in = abs_xsec_per_species, filename = "results/abs_xsec_per_species", digits = 3 ) } # ----------------< Run For-Loop >---------------------------------------------- IndexCreate( stop ) nelemGet( stop, rtp_pressures ) # number of pressures defined. IndexAdd( stop, stop, -1 ) # adjust index for zero-based indexing. ForLoop( forloop_agenda, 0, stop, 1 ) }