#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 { # Select frequency band here: # INCLUDE "odin/odinsmr_501.arts" #INCLUDE "odin/odinsmr_544.arts" # Possibility to change considered species # For example #SpeciesSet( abs_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 ) # This example assumes 1D # Here things are set manually (not using AmosphereSet1D), and it is tested # that lat and long grids with length 1 are accepted IndexSet( atmosphere_dim, 1 ) VectorSet( lat_grid, [ 45 ] ) VectorSet( lon_grid, [ 0 ] ) # Atmospheric profiles here taken from Fascod AtmRawRead( t_field_raw, z_field_raw, vmr_field_raw, abs_species, "../atmosphere_data/tropical" ) # AtmFieldsCalc # Get ground altitude (z_surface) from z_field Extract( z_surface, z_field, 0 ) basics_checkedCalc cloudbox_checkedCalc # ---- Create absorption table ----------------------------------------------- abs_lines_per_speciesCreateFromLines AbsInputFromAtmFields SpeciesSet( abs_nls, [] ) VectorSet( abs_nls_pert, [] ) VectorSet( abs_t_pert, [] ) abs_lookupCreate AgendaSet( abs_scalar_gas_agenda ){ abs_scalar_gasExtractFromLookup } # ---- Sensor position and LOS ----------------------------------------------- # Number of tangent altitudes IndexCreate( n_tan ) IndexSet( n_tan, 4 ) # Sensor position, with platform altitude set to 600 km MatrixSetConstant( sensor_pos, n_tan, 1, 600e3 ) sensor_posAddRgeoid # 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, r_geoid, atmosphere_dim, z_tan ) Matrix1ColFromVector( sensor_los, za ) # ---- Active these lines to instead calculate transmission # #AgendaSet( iy_space_agenda ){ # Ignore( rte_pos ) # Ignore( rte_los ) # MatrixUnitIntensity( iy, stokes_dim, f_grid ) #} #AgendaSet( iy_clearsky_agenda ){ # iyBeerLambertStandardClearsky #} #StringSet( y_unit, "1" ) # ---- Calculate spectra and save yCalc 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 ) WriteXML( output_file_format, y_error ) WriteXML( output_file_format, y_aux ) }