#DEFINITIONS: -*-sh-*- # # ARTS control file for basic testing of iy_surface_agenda and # surface_rtprop_agenda. # # 2012-06-24 Patrick Eriksson Arts2{ # # Basic settings # AtmosphereSet1D cloudboxOff jacobianOff VectorSet( f_grid, [10e9] ) VectorSet( rtp_pos, [0] ) VectorSet( rtp_los, [140] ) VectorSet( rte_pos2, [] ) # No transmitter involved VectorSet( lat_true, [54] ) # 0.8 point between South and North poles VectorSet( lon_true, [23] ) NumericSet( surface_skin_t, 300 ) refellipsoidEarth( refellipsoid, "Sphere" ) MatrixSet( z_surface, [0] ) # # Dummy variables # Touch( t_field ) Touch( z_field ) Touch( vmr_field ) Touch( iy_transmission ) # # "Background" agendas: # AgendaSet( iy_surface_agenda ){ iySurfaceRtpropAgenda } AgendaSet( iy_main_agenda ){ Ignore( iy_agenda_call1 ) Ignore( iy_transmission ) Ignore( iy_aux_vars ) Ignore( rte_pos ) Ignore( rte_los ) Ignore( rte_pos2 ) Ignore( cloudbox_on ) Ignore( jacobian_do ) Ignore( t_field ) Ignore( z_field ) Ignore( vmr_field ) Touch( iy_aux ) Touch( ppath ) Touch( diy_dx ) MatrixUnitIntensity( iy, stokes_dim, f_grid ) MatrixScale( iy, iy, 100 ) } AgendaSet( blackbody_radiation_agenda ){ IndexCreate( nf ) nelemGet( nf, f_grid ) VectorSetConstant( blackbody_radiation, nf, rtp_temperature ) } # # Test different versions of surface_rtprop_agenda # MatrixCreate( iy_correct ) # # Scalar RT # IndexSet( stokes_dim, 1 ) # r=0.8 for all scalar cases below VectorSetConstant( surface_scalar_reflectivity, 1, 0.8 ) MatrixSet( iy_correct, [140] ) AgendaSet( surface_rtprop_agenda ){ specular_losCalc surfaceFlatScalarReflectivity } AgendaExecute( iy_surface_agenda ) Compare( iy, iy_correct, 1e-9 ) IndexSet(lambertian_nza, 5) AgendaSet( surface_rtprop_agenda ){ Ignore( rtp_pos ) surfaceLambertianSimple( za_pos=0.5 ) } AgendaExecute( iy_surface_agenda ) Compare( iy, iy_correct, 1e-9 ) GriddedField4Create( r_gfield4 ) ReadXML( r_gfield4, "scalar_r_field_2angles.xml" ) AgendaSet( surface_rtprop_agenda ){ specular_losCalc surface_scalar_reflectivityFromGriddedField4( r_field=r_gfield4 ) surfaceFlatScalarReflectivity } AgendaExecute( iy_surface_agenda ) Compare( iy, iy_correct, 1e-9 ) ReadXML( r_gfield4, "scalar_r_field_10angles.xml" ) AgendaExecute( iy_surface_agenda ) Compare( iy, iy_correct, 1e-9 ) # # Vector RT # IndexSet( stokes_dim, 4 ) # Blackbody surface in two diffferent ways MatrixSet( iy_correct, [300,0,0,0] ) AgendaSet( surface_rtprop_agenda ){ Ignore( rtp_los ) Ignore( rtp_pos ) surfaceBlackbody } AgendaExecute( iy_surface_agenda ) Compare( iy, iy_correct, 1e-9 ) AgendaSet( surface_rtprop_agenda ){ specular_losCalc Tensor3SetConstant( surface_reflectivity, 1, stokes_dim, stokes_dim, 0 ) surfaceFlatReflectivity } AgendaExecute( iy_surface_agenda ) Compare( iy, iy_correct, 1e-9 ) # r=0.8 for all elements (not realistic) MatrixSet( iy_correct, [140,-160,-160,-160] ) AgendaSet( surface_rtprop_agenda ){ specular_losCalc Tensor3SetConstant( surface_reflectivity, 1, stokes_dim, stokes_dim, 0.8 ) surfaceFlatReflectivity } AgendaExecute( iy_surface_agenda ) Compare( iy, iy_correct, 1e-9 ) # Diagonal r, with 0.8 on the diagonal MatrixSet( iy_correct, [140,0,0,0] ) GriddedField6Create( r_gfield6 ) ReadXML( r_gfield6, "r_field_2angles.xml" ) AgendaSet( surface_rtprop_agenda ){ specular_losCalc surface_reflectivityFromGriddedField6( r_field=r_gfield6 ) surfaceFlatReflectivity } AgendaExecute( iy_surface_agenda ) Compare( iy, iy_correct, 1e-9 ) # n = (3,0) in two different ways complex_refr_indexConstant( complex_refr_index = surface_complex_refr_index, refr_index_real = 3.0, refr_index_imag = 0 ) AgendaSet( surface_rtprop_agenda ){ specular_losCalc surfaceFlatRefractiveIndex } AgendaExecute( iy_surface_agenda ) Copy( iy_correct, iy ) GriddedField5Create( r_gfield5 ) ReadXML( r_gfield5, "complex_n_field.xml" ) AgendaSet( surface_rtprop_agenda ){ specular_losCalc surface_complex_refr_indexFromGriddedField5( complex_refr_index_field = r_gfield5 ) surfaceFlatRefractiveIndex } AgendaExecute( iy_surface_agenda ) Compare( iy, iy_correct, 1e-9 ) }