# 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", "H2O-ContRosenkranzSelf", "H2O-ContRosenkranzForeign"] } # 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{} # FIXME: Thomas, the values for C and x are just my guess from the # Rosenkranz paper. You have to put in the right ones. Note # that xsec is in [1/m], f_mono is in [Hz], p_abs is in [Pa], and t_abs is in # [K]. Therefor, the exponent in C is very different from # Rosenkranz's paper. I probably have not got it right, I did # this very quickly. You have to find out the right numbers yourself. cont_descriptionAppend{ name = "H2O-ContRosenkranzSelf" parameters = [ 7.8e-27, 4.5 ] } cont_descriptionAppend{ name = "H2O-ContRosenkranzForeign" parameters = [ 2.5e-3, 7e15 ] } # Read spectral line data from HITRAN catalogue for 0-200 GHz: lines_per_tgReadFromCatalogues{ filenames = ["../../data/spectroscopy/hitran96/hitran96_lowfreq.par"] formats = [ "HITRAN96" ] fmin = [ 0 ] fmax = [ 200e9 ] } lines_per_tgWriteToFile{""} # Read the pressure, temperature, and altitude profiles and create # the workspace variable `raw_ptz_1d': MatrixReadAscii (raw_ptz_1d) {"../../data/atmosphere/fascod/midlatitude-summer.tz.am"} # The same for the input VMR profiles: raw_vmrs_1dReadFromScenario {"../../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 = 10 n = 140 } 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: VectorCopyFromArrayOfVector(h2o_abs,vmrs){0} # Optionally write these to files: VectorWriteAscii (t_abs) {""} VectorWriteAscii (z_abs) {""} ArrayOfVectorWriteAscii (vmrs) {""} # Create the frequency grid `f_mono': VectorNLinSpace(f_mono){ start = 1e9 stop = 200e9 n = 200 } # 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) {""}