# Example file for continuum calculations. # This defines the list of tag groups (`tgs'). Absorption # coefficients will be calculated separately for each tag group. This # is necessary in order to calculate weighting functions later on. # The lines are assigned to the tag groups in the order as the groups # are specified here. That means if you do ["H2O-181","H2O"], the last # group H2O gets assigned all the H2O lines that do not fit in the # first group. # # The continuum tags are special, since continua are not added by # default. Thus, just selecting "H2O" will give you no continuum. You # can add the H2O continua to a H2O line tag group, or keep them # separate as in this example. tgsDefine{ [ "H2O-ContRosenkranzSelf", "H2O-ContRosenkranzForeign", "H2O-ContMPM93", "CO2-ContRosenkranzSelf", "CO2-ContRosenkranzForeign", "N2-ContRosenkranzSelf", "O2-ContRosenkranz"] } # # ******************************************************************** # The next few methods set the WSVs `cont_description_names' and # `cont_description_parameters'. The first one contains names of allowed # continua, the second the required parameters (in the case of # Rosenkranz continua only two). # # These WSVs always have to be set, even if there is no continuum. In # that case you just call cont_descriptionInit and nothing else. Note # that cont_description_names and cont_description_parameters may # contain the descriptions for all kinds of continua. So, for each # continuum tag mentioned in tgsDefine there MUST be a cont_description, # but not for every cont_description there must be a continuum tag in # tgsDefine. # cont_descriptionInit{} # # ---------- H2O ------------------------------- # Rosenkranz original parameters: # Cs = 17.96e-34 1/m / (Hz^2*Pa^2) # xs = 4.5 cont_descriptionAppend{ name = "H2O-ContRosenkranzSelf" parameters = [ 17.96e-34, 4.5 ] } # # Rosenkranz original parameters: # Cs = 5.43e-35 1/m / (Hz^2*Pa^2) # xs = 0.0 cont_descriptionAppend{ name = "H2O-ContRosenkranzForeign" parameters = [ 5.43e-35, 0.0 ] } # # MPM93 original parameters: # f0 = 1780.0e9 Hz # b1 = 22300.0 Hz/Pa # b2 = 0.952 # b3 = 17.6e4 Hz/Pa # b4 = 30.5 # b5 = 2 # b6 = 5 cont_descriptionAppend{ name = "H2O-ContMPM93" parameters = [ 1780.0e9, 22300.0, 0.952, 17.6e4, 30.5, 2, 5 ] } # ---------- CO2 ------------------------------- # Rosenkranz CO2-self continuum: # C = 7.43e-37 1/(Pa^2*Hz^2*m) # x = 5.08 cont_descriptionAppend{ name = "CO2-ContRosenkranzSelf" parameters = [ 7.43e-37, 5.08 ] } # # Rosenkranz CO2-foreign continuum: # C = 2.71e-37 1/(Pa^2*Hz^2*m) # x = 4.7 cont_descriptionAppend{ name = "CO2-ContRosenkranzForeign" parameters = [ 2.71e-37, 4.7 ] } # ---------- nitrogen -------------------------- # Rosenkranz N2-self continuum: # C = 1.05e-38 1/(Pa^2*Hz^2*m) # x = 3.55 cont_descriptionAppend{ name = "N2-ContRosenkranzSelf" parameters = [ 1.05e-38, 3.55 ] } # ---------- oxygen ---------------------------- # Rosenkranz O2 continuum: # C = 1.108e-14 K^2/(Hz*Pa*m) # x = 0.8 cont_descriptionAppend{ name = "O2-ContRosenkranz" parameters = [ 1.108e-14, 0.8 ] } # ******************************************************************** # Read spectral line data from HITRAN catalogue for 0-200 GHz: lines_per_tgReadFromCatalogues{ filenames = ["arts/data/spectroscopy/hitran96/hitran96_lowfreq.par"] formats = [ "HITRAN96" ] fmin = [ 0.0e9 ] fmax = [ 1.5e12 ] } lines_per_tgWriteToFile{""} # Read the pressure, temperature, and altitude profiles and create # the workspace variable `raw_ptz_1d': MatrixReadAscii (raw_ptz_1d) {"arts/data/atmosphere/fascod/midlatitude-summer.tz.am"} # The same for the input VMR profiles: raw_vmrs_1dReadFromScenario {"arts/data/atmosphere/fascod/midlatitude-summer"} # Optionally write this to a file: #ArrayOfMatrixWriteAscii (raw_vmrs_1d) {""} # Create the pressure grid `p_abs': VectorNLogSpace(p_abs){ start = 100000 stop = 100000 n = 2 } VectorWriteAscii(p_abs){""} # Now interpolate all the raw atmospheric input onto the pressure # grid and create the atmospheric variables `t_abs', `z_abs', `vmrs' AtmFromRaw1D{} # Set the physical N2 profile from the N2 profile in vmrs: VectorCopyFromArrayOfVector(n2_abs,vmrs){5} # Set the physical H2O profile from the H2O profile in vmrs: VectorCopyFromArrayOfVector(h2o_abs,vmrs){1} # Optionally write these to files: VectorWriteAscii (t_abs) {""} VectorWriteAscii (z_abs) {""} ArrayOfVectorWriteAscii (vmrs) {""} # Create the frequency grid `f_mono': VectorNLinSpace(f_mono){ start = 100.0e9 stop = 100.0e9 n = 2 } # Write frequency grid to file: VectorWriteAscii (f_mono) {""} # Set the lineshape function for all calculated tags lineshapeDefine{ shape = "Voigt_Kuntz6" normalizationfactor = "linear" cutoff = -1 } # Method xsec_per_tgCalcConts calculates the continua and adds them to # xsec_per_tg. It requires cont_description as # input (and quite a few other things). # # The present xsec_per_tgCalc is renamed to xsec_per_tgCalcLines. It # also adds the absorption cross-sectionto xsec_per_tg. So, this has to # be initialized at first. # # The total calling sequence is thus: # # xsec_per_tgInit() # xsec_per_tgAddLines() # xsec_per_tgAddConts() # absCalcFromXsec() # # As an alternative you can use absCalc, which does all the above # things. absCalc{} # These we definitely want to write to files! MatrixWriteAscii (abs) {""} ArrayOfMatrixWriteAscii (abs_per_tg) {""}