#DEFINITIONS: -*-sh-*- # # ARTS control file for testing 1D propagation path calculations. # # It is also demonstration of how to use the ForLopp agenda. # # 2012-02-17 Patrick Eriksson Arts2{ INCLUDE "general/general.arts" INCLUDE "general/agendas.arts" # Agenda for scalar gas absorption calculation Copy(abs_xsec_agenda, abs_xsec_agenda__noCIA) # sensor-only path Copy( ppath_agenda, ppath_agenda__FollowSensorLosPath ) # Number of Stokes components to be computed # IndexSet( stokes_dim, 1 ) # Reference ellipsoid # refellipsoidEarth( refellipsoid, "Sphere" ) # A pressure grid rougly matching 0 to 80 km. # VectorNLogSpace( p_grid, 41, 1000e2, 1 ) # Atmospheric dimensionality # AtmosphereSet1D # Water vapour needed if refraction will be calculated # abs_speciesSet( species=["H2O"] ) # Read a 1D atmospheric case # AtmRawRead( t_field_raw, z_field_raw, vmr_field_raw, abs_species, "testdata/tropical" ) AtmFieldsCalc # Ground altitude (z_surface) # MatrixSetConstant( z_surface, 1, 1, 500 ) # Initializing cloudbox: No scattering # cloudboxOff # To instead make tests with cloudbox on, activate those: #FlagOn( cloudbox_on ) #ArrayOfIndexSet( cloudbox_limits, [ 4, 10 ] ) # A dummy frequency grid # VectorSet( f_grid, [10e9] ) # Check if atmosphere OK # atmfields_checkedCalc atmgeom_checkedCalc cloudbox_checkedCalc # Max step length for the representation of the propagation path # NumericSet( ppath_lmax, 20e3 ) # # A single propagation path: # # Set a observation position and line-of-sight (LOS) # VectorSet( rte_pos, [ 600e3 ] ) #VectorSet( rte_los, [ 112.2550477986 ] ) # Angle that just touches for 600e3 VectorSet( rte_los, [ 113 ] ) VectorSet( rte_pos2, [] ) # No transmitter involved # # no refraction # Copy( ppath_step_agenda, ppath_step_agenda__GeometricPath ) # Calculate propagation path # ppathCalc # Print complete ppath # #Print( ppath, 0 ) # Uncomment to skip batch part below # #Exit() # # Run through a number of cases, that should run without error # # Use sensor_pos/los to store each case # MatrixSet( sensor_pos, [600e3;600e3;600e3;600e3; 3e3; 10e3; 9e3; 500; 500] ) MatrixSet( sensor_los, [ 45; 95; 113; 180; 0; 90; 100; 45; 100] ) IndexCreate( ilast ) nrowsGet( ilast, sensor_pos ) IndexStepDown( ilast, ilast ) AgendaSet( forloop_agenda ){ VectorExtractFromMatrix( rte_pos, sensor_pos, forloop_index, "row" ) VectorExtractFromMatrix( rte_los, sensor_los, forloop_index, "row" ) ppathCalc } # # no refraction # Copy( ppath_step_agenda, ppath_step_agenda__GeometricPath ) ForLoop( forloop_agenda, 0, ilast, 1 ) # # Repeat with refraction # Copy( ppath_step_agenda, ppath_step_agenda__RefractedPath ) NumericSet( ppath_lraytrace, 1e3 ) Copy( refr_index_air_agenda, refr_index_air_agenda__GasThayer ) ForLoop( forloop_agenda, 0, ilast, 1 ) }