Arts2 { # First run basic tests of implementation ##### TMatrixTest # Define particle and ssd grids ##### VectorCreate ( data_za_grid ) VectorNLinSpace( data_za_grid, 19, 0, 180 ) VectorCreate ( data_aa_grid ) VectorNLinSpace( data_aa_grid, 19, 0, 180 ) VectorCreate ( data_f_grid ) VectorSet( data_f_grid, [ 230e9, 240e9 ] ) VectorCreate( data_t_grid ) VectorSet( data_t_grid, [ 220, 250, 270] ) #complex_refr_indexIceMatzler06( # data_f_grid = data_f_grid, # data_T_grid = data_t_grid ) ReadXML(complex_refr_index, "../refice/TestRefice.complex_refr_indexREFERENCE.xml") StringCreate( part_shape ) StringSet( part_shape, "cylindrical" ) NumericCreate( part_dveq ) NumericSet( part_dveq, 100e-6 ) # [m] NumericCreate( part_ar ) NumericSet( part_ar, 2. ) NumericCreate( part_mass ) NumericSet( part_mass, 4.7998300e-10 ) # [kg]; m = Pi/6. * dveq^3 * density_ice SingleScatteringDataCreate(ref) # TMatrix calculation: AZIMUTHALLY RANDOMLY ORIENTED (here: horizontally aligned) PARTICLE ##### scat_data_singleTmatrix( shape = part_shape, diameter_volume_equ = part_dveq, aspect_ratio = part_ar, mass = part_mass, ptype = "azimuthally_random", data_f_grid = data_f_grid, data_t_grid = data_t_grid, data_za_grid = data_za_grid, data_aa_grid = data_aa_grid, ) # Write data to file. And read from file (making sure, format is ok). # WriteXML( "ascii", scat_data_single, "TestTMatrix.scat_data_single.azi-random.xml" ) WriteXML( "ascii", scat_meta_single ) ReadXML( scat_data_single, "TestTMatrix.scat_data_single.azi-random.xml" ) ReadXML( scat_meta_single ) # Compare to reference data to ensure calcs provide expected results. # ReadXML( ref, "TestTMatrix.azi-random.ssdREFERENCE.xml" ) Compare(scat_data_single, ref, 2e-10) # TMatrix calculation: TOTALLY RANDOMLY ORIENTED PARTICLE ##### scat_data_singleTmatrix( shape = part_shape, diameter_volume_equ = part_dveq, aspect_ratio = part_ar, mass = part_mass, ptype = "totally_random", data_f_grid = data_f_grid, data_t_grid = data_t_grid, data_za_grid = data_za_grid, ) # Write data to file. And read from file (making sure, format is ok). # WriteXML( "ascii", scat_data_single, "TestTMatrix.scat_data_single.tot-random.xml" ) WriteXML( "ascii", scat_meta_single ) ReadXML( scat_data_single, "TestTMatrix.scat_data_single.tot-random.xml" ) ReadXML( scat_meta_single ) # Compare to reference data to ensure calcs provide expected results. # ReadXML( ref, "TestTMatrix.tot-random.ssdREFERENCE.xml" ) Compare(scat_data_single, ref, 1e-12) # Check particle size parameter conversions # (volume equivalent sphere diameter and maximum dimension) # # that's actually not limited to TMatrix calcs, but a non-spherical particles # issue. anyway, we keep that test here. ##### NumericCreate( dveq0 ) NumericCreate( dveq ) NumericCreate( dmax ) NumericCreate( volume ) NumericCreate( darea ) StringCreate( shape ) NumericCreate( aratio ) # NumericSet( dveq0, 100e-6 ) StringSet( shape, "cylindrical" ) # NumericSet( aratio, 3.45 ) diameter_maxFromDiameter_volume_equ( dmax, darea, shape, dveq0, aratio ) diameter_volume_equFromDiameter_max( dveq, volume, shape, dmax, aratio ) Compare( dveq, dveq0, 1e-12 ) # NumericSet( aratio, 0.22 ) diameter_maxFromDiameter_volume_equ( dmax, darea, shape, dveq0, aratio ) diameter_volume_equFromDiameter_max( dveq, volume, shape, dmax, aratio ) Compare( dveq, dveq0, 1e-12 ) StringSet( shape, "spheroidal" ) # NumericSet( aratio, 3.45 ) diameter_maxFromDiameter_volume_equ( dmax, darea, shape, dveq0, aratio ) diameter_volume_equFromDiameter_max( dveq, volume, shape, dmax, aratio ) Compare( dveq, dveq0, 1e-12 ) # NumericSet( aratio, 0.22 ) diameter_maxFromDiameter_volume_equ( dmax, darea, shape, dveq0, aratio ) diameter_volume_equFromDiameter_max( dveq, volume, shape, dmax, aratio ) Compare( dveq, dveq0, 1e-12 ) }