# 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-ContStandardSelf", "H2O-ContStandardForeign", "H2O-ContMPM93", # "CO2-ContRosenkranzSelf", # "CO2-ContRosenkranzForeign", # "N2-ContRosenkranzSelf", # "O2-ContRosenkranz", # "H2O-MPM93droplet", # "H2O-MPM93ice", "H2O-CP98Model", "H2O-MPM87Model", "H2O-MPM89Model", "H2O-MPM93Model", "H2O-PWR98Model"] } # # ******************************************************************** # 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 ] #} # ---------- water/ice particles --------------- # MPM93 model for liquid water/ice particle absorption: # liquid water droplet parameters # w : suspended water droplet density, valid range: 0-10.0e-3 kg/m3 # m : specific weight of the droplet, fixed value: 1.000e3 kg/m3 #cont_descriptionAppend{ # name = "H2O-MPM93droplet" # parameters = [ 1.000e-3, 1.000e3 ] #} # ice particle parameters # w : suspended ice particle density, valid range: 0-10.0e-3 kg/m3 # m : specific weight of ice particles, fixed value: 0.916e3 kg/m #cont_descriptionAppend{ # name = "H2O-MPM93ice" # parameters = [ 1.000e-3, 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-CP98Model" parameters = [ 1.2369, 1.0639, 1.0658] } # # MPM87 original parameters: # CC = 1.000 # CL = 1.000 # CW = 1.000 cont_descriptionAppend{ name = "H2O-MPM87Model" parameters = [ 1.000, 1.000, 1.000] } # # MPM89 original parameters: # CC = 1.000 # CL = 1.000 # CW = 1.000 cont_descriptionAppend{ name = "H2O-MPM89Model" parameters = [ 1.000, 1.000, 1.000] } # # MPM93 original parameters: # CC = 1.000 # CL = 1.000 # CW = 1.000 cont_descriptionAppend{ name = "H2O-MPM93Model" parameters = [ 1.000, 1.000, 1.000] } # # Rosenkranz original parameters: # CC = 1.000 # CL = 1.000 # CW = 1.000 cont_descriptionAppend{ name = "H2O-PWR98Model" 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"] 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 = 1000 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 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 = 10.0e9 stop = 40.0e9 n = 120 } # 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) {""}