# 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-CP98", # "H2O-MPM87", # "H2O-MPM89", # "H2O-MPM93", # "H2O-PWR98", # "H2O-ContStandardSelf", # "H2O-ContStandardForeign", # "H2O-ContMPM93", # "CO2-ContRosenkranzSelf", # "CO2-ContRosenkranzForeign", "O2", "O2-ContRosenkranz", "O2-PWR93O2", # "N2", "N2-ContRosenkranzSelf" # "liquidcloud-MPM93droplet", # "icecloud-MPM93" ] } # # ******************************************************************** # 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 # Cruz-Pol original parameters: # Cs = 1.851e-33 1/m / (Hz^2*Pa^2) # xs = 7.5 cont_descriptionAppend{ name = "H2O-ContStandardSelf" parameters = [ 17.96e-34, 4.5 ] } # # Rosenkranz original parameters: # Cf = 5.43e-35 1/m / (Hz^2*Pa^2) # xf = 0.0 # Cruz-Pol original parameters: # Cf = 5.857e-35 1/m / (Hz^2*Pa^2) # xf = 0.0 cont_descriptionAppend{ name = "H2O-ContStandardForeign" 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 ] } # Rosenkranz O2 absorption model: # CC : continuum term scale factor, default = 1.000 # CL : line strength scale factor, default = 1.000 # CW : line broadening scale factor, default = 1.000 # CO : line coupling scale factor, default = 1.000 cont_descriptionAppend{ name = "O2-PWR93O2" parameters = [ 0.000, 1.000, 1.000, 1.000 ] } # ---------- water particles ------------------- # MPM93 model for liquid water/ice particle absorption: # liquid water droplet parameters # w : scaling factor for suspended water droplet density, default = 1.000 # m : specific weight of the droplet, fixed value: 1.000e3 kg/m3 cont_descriptionAppend{ name = "liquidcloud-MPM93droplet" parameters = [ 1.000, 1.000e3 ] } # ---------- ice particles --------------------- # ice particle parameters # w : scaling factor for suspended ice particle density, default = 1.000 # m : specific weight of ice particles, fixed value: 0.916e3 kg/m cont_descriptionAppend{ name = "icecloud-MPM93" parameters = [ 1.000, 0.916e3 ] } # ---------- additional H2O absorption models -- # Cruz-Pol original parameters: # CC = 1.2369 +/- 0.155) # CL = 1.0639 +/- 0.016) # CW = 1.0658 +/- 0.0096) cont_descriptionAppend{ name = "H2O-CP98" parameters = [ 1.2369, 1.0639, 1.0658] } # # MPM87 original parameters: # CC = 1.000 # CL = 1.000 # CW = 1.000 cont_descriptionAppend{ name = "H2O-MPM87" parameters = [ 1.000, 1.000, 1.000] } # # MPM89 original parameters: # CC = 1.000 # CL = 1.000 # CW = 1.000 cont_descriptionAppend{ name = "H2O-MPM89" parameters = [ 1.000, 1.000, 1.000] } # # MPM93 original parameters: # CC = 1.000 # CL = 1.000 # CW = 1.000 cont_descriptionAppend{ name = "H2O-MPM93" parameters = [ 1.000, 1.000, 1.000] } # # Rosenkranz original parameters: # CC = 1.000 # CL = 1.000 # CW = 1.000 cont_descriptionAppend{ name = "H2O-PWR98" parameters = [ 1.000, 1.000, 1.000] } # # ******************************************************************** # Read spectral line data from HITRAN catalogue for 0-200 GHz: lines_per_tgReadFromCatalogues{ filenames = [ "arts/data/spectroscopy/hitran96/hitran96_lowfreq.par", "arts/data/spectroscopy/arts/o2_spin_rot_pwr_3.al"] formats = [ "HITRAN96", "ARTS" ] fmin = [ 1.0e9, 1.0e9 ] fmax = [ 3.0e10, 1.0e12 ] } 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"} raw_vmrs_1dReadFromFiles {seltags = ["liquidcloud-MPM93droplet", "icecloud-MPM93ice"] filenames = ["arts/data/atmosphere/particles/midlatitude-summer.cumulus.MPM93droplet.am", "arts/data/atmosphere/particles/midlatitude-summer.cirrus.MPM93.am"] basename = "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 = 10000 n = 100 } 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 H2O profile from the H2O profile in vmrs: h2o_absSet{} # Set the physical N2 profile from the N2 profile in vmrs: n2_absSet{} # Optionally write these to files: VectorWriteAscii (t_abs) {""} VectorWriteAscii (z_abs) {""} ArrayOfVectorWriteAscii (vmrs) {""} # Create the frequency grid `f_mono': VectorNLinSpace(f_mono){ start = 1.0e8 stop = 100.0e9 n = 300 } # Write frequency grid to file: VectorWriteAscii (f_mono) {""} # Set the lineshape function for all calculated tags lineshapeDefine{ shape = "Rosenkranz_Voigt_Kuntz6" normalizationfactor = "quadratic" 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) {""}