#DEFINITIONS: -*-sh-*- # This is a test doing Odin-SMR simulations. # # The calculations are using multiple measuremeent blocks and the control file # can easily be modified to work for 2D or 3D atmospheres. # For 1D limb sounding it can be more effecient to do the simulations inside # a single measurement block. Especially if the number tangent altitudes are # high and the spacing between tangent altitudes small. See TestOdinSMR_1D.arts # for an example on such calculations. # # Author: Patrick Eriksson Arts2 { # Basic settings (already needed in sensor part) # --- # This example assumes 1D AtmosphereSet1D # scalar RT IndexSet( stokes_dim, 1 ) # Select frequency band here: # INCLUDE "odinsmr_501.arts" #INCLUDE "odinsmr_544.arts" # Agenda for scalar gas absorption calculation Copy(abs_xsec_agenda, abs_xsec_agenda__noCIA) # 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 ) # sensor-only path Copy( ppath_agenda, ppath_agenda__FollowSensorLosPath ) # no refraction Copy( ppath_step_agenda, ppath_step_agenda__GeometricPath ) # Possibility to change considered species # For example #abs_speciesSet( species=[ # "H2O,H2O-ForeignContStandardType,H2O-SelfContStandardType", # "O3" #] ) # ---- Atmospheric scenario -------------------------------------------------- # A pressure grid rougly matching 0 to 80 km in 250 m steps. # The pressure grid is for the SMR processing not uniform. It is there # created to be most dense over the actual range of tangent altitudes. # VectorNLogSpace( p_grid, 321, 1000e2, 1 ) # Atmospheric profiles here taken from Fascod 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 ) # No scattering cloudboxOff # No jacobian calculations jacobianOff atmfields_checkedCalc atmgeom_checkedCalc cloudbox_checkedCalc # ---- Create absorption table ----------------------------------------------- abs_lines_per_speciesCreateFromLines AbsInputFromAtmFields abs_speciesSet( abs_species=abs_nls, species=[] ) VectorSet( abs_nls_pert, [] ) VectorSet( abs_t_pert, [] ) abs_xsec_agenda_checkedCalc abs_lookupCalc # absorption from LUT Copy( propmat_clearsky_agenda, propmat_clearsky_agenda__LookUpTable ) # ---- Sensor position and LOS ----------------------------------------------- # Number of tangent altitudes IndexCreate( n_tan ) IndexSet( n_tan, 4 ) # Sensor position, platform altitude set to 600 km MatrixSetConstant( sensor_pos, n_tan, 1, 600e3 ) # LOS, specified by the corresponding geometrical tangent altitudes # Tangent altitudes will be equally spaced between 50 and 20 km VectorCreate( z_tan ) VectorNLinSpace( z_tan, n_tan, 50e3, 20e3 ) VectorCreate( za ) VectorZtanToZa1D( za, sensor_pos, refellipsoid, atmosphere_dim, z_tan ) Matrix1ColFromVector( sensor_los, za ) sensor_checkedCalc # ---- Calculate spectra and save # (standard) emission calculation Copy( iy_main_agenda, iy_main_agenda__Emission ) propmat_clearsky_agenda_checkedCalc yCalc VectorCreate( yREFERENCE ) ReadXML( yREFERENCE, "yREFERENCE.xml" ) Compare( y, yREFERENCE, 1e-2 ) WriteXML( output_file_format, y ) WriteXML( output_file_format, z_tan ) WriteXML( output_file_format, sensor_response_f_grid ) WriteXML( output_file_format, y_f ) WriteXML( output_file_format, y_pol ) WriteXML( output_file_format, y_pos ) WriteXML( output_file_format, y_los ) }