#DEFINITIONS: -*-sh-*- # # Demonstration and test of performing a single monochromatic pencil beam # calculation, without involving any sensor characteristics. That is, how to # calculate monochromatic pencil beam spectra without using yCalc. # # The case treats 1D limb sounding. The result is converted to a measurement # vector, y, holding brightness temperatures. # # 2012-02-17, Patrick Eriksson Arts2 { INCLUDE "general/general.arts" INCLUDE "general/continua.arts" INCLUDE "general/agendas.arts" INCLUDE "general/planet_earth.arts" # Agenda for scalar gas absorption calculation Copy(abs_xsec_agenda, abs_xsec_agenda__noCIA) # (standard) emission calculation Copy( iy_main_agenda, iy_main_agenda__Emission ) # cosmic background radiation Copy( iy_space_agenda, iy_space_agenda__CosmicBackground ) # standard surface agenda (i.e., make use of surface_rtprop_agenda) Copy( iy_surface_agenda, iy_surface_agenda__UseSurfaceRtprop ) # Planck as blackbody radiation Copy( blackbody_radiation_agenda, blackbody_radiation_agenda__Planck ) # on-the-fly absorption Copy( propmat_clearsky_agenda, propmat_clearsky_agenda__OnTheFly ) # sensor-only path Copy( ppath_agenda, ppath_agenda__FollowSensorLosPath ) # no refraction Copy( ppath_step_agenda, ppath_step_agenda__GeometricPath ) # Number of Stokes components to be computed # IndexSet( stokes_dim, 1 ) # Frequency grid # VectorNLinSpace( f_grid, 201, 325e9, 327e9 ) # A pressure grid rougly matching 0 to 80 km, in steps of 2 km. # VectorNLogSpace( p_grid, 41, 1000e2, 1 ) # Definition of species # abs_speciesSet( species= ["H2O-PWR98", "N2-SelfContStandardType", "O2-PWR93"] ) # No line data needed here # abs_lines_per_speciesSetEmpty # Dimensionality of the atmosphere # AtmosphereSet1D # Atmospheric profiles # AtmRawRead( t_field_raw, z_field_raw, vmr_field_raw, abs_species, "testdata/tropical" ) # AtmFieldsCalc # Get ground altitude (z_surface) from z_field Extract( z_surface, z_field, 0 ) # Definition of position and LOS (simulating limb sounding from 600 km) # VectorSet( rte_pos, [ 600e3 ] ) VectorSet( rte_los, [ 113.3 ] ) VectorSet( rte_pos2, [] ) # No transmitter involved # Define auxiliary data (the order between the quantities is free) # ArrayOfStringSet( iy_aux_vars, [ "Pressure", "Temperature", "VMR, species 0", "Absorption, summed", "Absorption, species 0", "Absorption, species 1", "Absorption, species 2", "Radiative background", "iy", "Optical depth" ] ) # No scattering # cloudboxOff # No jacobian calculation # jacobianOff # Perform RT calculations # abs_xsec_agenda_checkedCalc propmat_clearsky_agenda_checkedCalc atmfields_checkedCalc atmgeom_checkedCalc cloudbox_checkedCalc # iyCalc # Convert to Tb # StringSet( iy_unit, "RJBT" ) # iyApplyUnit # To save calculated spectrum and transmission # #output_file_formatSetAscii #WriteXML( output_file_format, f_grid, "f_grid.xml" ) #WriteXML( output_file_format, iy, "iyREFERENCE.xml" ) #WriteXML( output_file_format, iy_aux, "iy_auxREFERENCE.xml" ) #WriteXML( output_file_format, ppath, "ppath.xml" ) # Check that results are OK with respect to an older reference calculation # MatrixCreate( iy0 ) # ReadXML( iy0, "iyREFERENCE.xml" ) Compare( iy, iy0, 0.01 ) }