# 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", "O2", "N2", # "H2O-CP98", # "H2O-MPM87", # "H2O-MPM89", "H2O-MPM93", # "H2O-PWR98", # "H2O-SelfContStandardType", # "H2O-ForeignContStandardType", # "H2O-ContMPM93", # "O2-SelfContPWR93", # "O2-SelfContMPM93", "O2-PWR93", # "O2-MPM93" # "N2-SelfContPWR93" # "N2-SelfContMPM93", # "CO2-SelfContPWR93", # "CO2-ForeignContPWR93", "liquidcloud-MPM93", "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 continuum ------------------------------------ # # 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-SelfContStandardType" 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-ForeignContStandardType" parameters = [ 5.43e-35, 0.0 ] } # # MPM93 original parameters: cont_descriptionAppend{ name = "H2O-ContMPM93" parameters = [ ] } # # ----- H2O full models (line+continuum) ----------------- # # Cruz-Pol 1998 H2O absorption model (line + continuum) cont_descriptionAppend{ name = "H2O-CP98" parameters = [ ] } # # Rosenkranz 1998 H2O absorption model (lines + continuum) cont_descriptionAppend{ name = "H2O-PWR98" parameters = [ ] } # # MPM87 H2O absorption model (lines + continuum) cont_descriptionAppend{ name = "H2O-MPM87" parameters = [ ] } # # MPM89 H2O absorption model (lines + continuum) cont_descriptionAppend{ name = "H2O-MPM89" parameters = [ ] } # # MPM93 H2O absorption model (lines + continuum) cont_descriptionAppend{ name = "H2O-MPM93" parameters = [ ] } # # ----- N2 continuum ------------------------------------- # # Rosenkranz N2-self continuum (dry air broadening): cont_descriptionAppend{ name = "N2-SelfContPWR93" parameters = [ ] } # MPM93 N2-self continuum (dry air broadening): cont_descriptionAppend{ name = "N2-SelfContMPM93" parameters = [ ] } # # ----- O2 continuum ------------------------------------- # # Rosenkranz O2 continuum (dry air broadening): cont_descriptionAppend{ name = "O2-SelfContPWR93" parameters = [ ] } # MPM93 O2-self continuum (dry air broadening): cont_descriptionAppend{ name = "O2-SelfContMPM93" parameters = [ ] } # # ----- O2 full models (line+continuum) ------------------ # # Rosenkranz O2 absorption model (line + continuum): cont_descriptionAppend{ name = "O2-PWR93" parameters = [ ] } # # MPM93 O2 absorption model (lines + continuum) cont_descriptionAppend{ name = "O2-MPM93" parameters = [ ] } # # ----- CO2 continuum ------------------------------------ # # Rosenkranz CO2-self continuum: cont_descriptionAppend{ name = "CO2-SelfContPWR93" parameters = [ ] } # # Rosenkranz CO2-foreign continuum: cont_descriptionAppend{ name = "CO2-ForeignContPWR93" parameters = [ ] } # # ----- liquid water particle ---------------------------- # # MPM93 model for liquid water particle absorption: cont_descriptionAppend{ name = "liquidcloud-MPM93" parameters = [ ] } # ----- ice water particle ------------------------------- # MPM93 model for ice water particle absorption: cont_descriptionAppend{ name = "icecloud-MPM93" parameters = [ ] } # # ******************************************************************** # Read spectral line data from HITRAN catalogue for 0-200 GHz: lines_per_tgReadFromCatalogues{ filenames = [ # "/pool/lookup2/arts-data/spectroscopy/hitran96/hitran96_lowfreq.par", "/pool/lookup2/arts-data/spectroscopy/arts/o2_spin_rot_pwr_3.aa"] 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': MatrixReadAscii (raw_ptz) {"/pool/lookup2/arts-data/atmosphere/fascod/midlatitude-summer.tz.am"} # The same for the input VMR profiles: #raw_vmrsReadFromScenario # {"/pool/lookup2/arts-data/atmosphere/fascod/midlatitude-summer"} raw_vmrsReadFromFiles {seltags = ["liquidcloud-MPM93", "icecloud-MPM93"] filenames = ["/pool/lookup2/arts-data/atmosphere/particles/midlatitude-summer.cumulonimbus.MPM93droplet.am", "/pool/lookup2/arts-data/atmosphere/particles/midlatitude-summer.cirrus.MPM93ice.am"] basename = "/pool/lookup2/arts-data/atmosphere/fascod/midlatitude-summer" } # Optionally write this to a file: #ArrayOfMatrixWriteAscii (raw_vmrs) {""} # Create the pressure grid `p_abs': VectorNLogSpace(p_abs){ start = 100000.000 stop = 5650.000 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' AtmFromRaw{CloudSatWV = "yes"} # 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) {""} MatrixWriteAscii (vmrs) {""} # Create the frequency grid `f_mono': VectorNLinSpace(f_mono){ start = 1.0e9 stop = 201.0e9 n = 200 } # 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 } # or set it separately for each tag lineshape_per_tgDefine{ shape = [ "Rosenkranz_Voigt_Kuntz6", "no_shape", "no_shape", "no_shape", "no_shape", # "no_shape", # "no_shape", # "no_shape", # "no_shape", # "no_shape", "no_shape"] normalizationfactor = [ "quadratic", "no_norm", "no_norm", "no_norm", "no_norm", # "no_norm", # "no_norm", # "no_norm", # "no_norm", # "no_norm", "no_norm"] cutoff = [ -1, -1 , -1 , -1 , -1, # -1, # -1, # -1 , # -1 , # -1 , -1] } # for all the above stated tags take this function: #lineshape_per_tgDefine{ # shape = ["Voigt_Kuntz6", "Rosenkranz_Voigt_Kuntz6", "Voigt_Kuntz6", # "no_shape","no_shape","no_shape", # "no_shape","no_shape","no_shape","no_shape","no_shape", # "no_shape","no_shape","no_shape","no_shape","no_shape", # "no_shape","no_shape","no_shape","no_shape","no_shape"] # normalizationfactor = ["quadratic","quadratic","quadratic", # "no_norm","no_norm","no_norm", # "no_norm","no_norm","no_norm","no_norm","no_norm", # "no_norm","no_norm","no_norm","no_norm","no_norm", # "no_norm","no_norm","no_norm","no_norm","no_norm"] # cutoff = [-1,-1,-1,-1,-1,-1, # -1,-1,-1,-1,-1, # -1,-1,-1,-1,-1, # -1,-1,-1,-1,-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) {""}