@@ -65,8 +65,9 @@ impl Geometry for Mesh0D {
6565
6666 let densities: Vec < f64 > = input. densities . iter ( ) . map ( |element| element/( length_unit) . powi ( 3 ) ) . collect ( ) ;
6767 assert ! ( !densities. is_empty( ) , "Input Error: density list empty." ) ;
68-
68+
6969 let total_density: f64 = densities. iter ( ) . sum ( ) ;
70+ assert ! ( total_density < MAX_DENSITY , "Input Error: total density {}/m^3 exceeds realistic values; check values or units." , total_density) ;
7071
7172 let energy_barrier_thickness = 1. /total_density. cbrt ( ) /SQRTPI * 2. ;
7273
@@ -154,6 +155,7 @@ impl Geometry for Mesh1D {
154155 let densities: Vec < Vec < f64 > > = geometry_input. densities
155156 . iter ( )
156157 . map ( |row| row. iter ( ) . map ( |element| element/( length_unit) . powi ( 3 ) ) . collect ( ) ) . collect ( ) ;
158+
157159
158160 //Assert all layer density lists are equal length
159161 assert ! (
@@ -170,6 +172,7 @@ impl Geometry for Mesh1D {
170172 layer_bottom += layer_thickness* length_unit;
171173
172174 let total_density: f64 = densities. iter ( ) . sum ( ) ;
175+ assert ! ( total_density < MAX_DENSITY , "Input Error: total density {}/m^3 exceeds realistic values; check values or units." , total_density) ;
173176 let concentrations: Vec < f64 > = densities. iter ( ) . map ( |& density| density/total_density) . collect :: < Vec < f64 > > ( ) ;
174177
175178 layers. push ( Layer1D :: new ( layer_top, layer_bottom, densities, concentrations, ck) ) ;
@@ -308,6 +311,7 @@ impl Geometry for HomogeneousMesh2D {
308311 let densities: Vec < f64 > = input. densities . iter ( ) . map ( |element| element/( length_unit) . powi ( 3 ) ) . collect ( ) ;
309312
310313 let total_density: f64 = densities. iter ( ) . sum ( ) ;
314+ assert ! ( total_density < MAX_DENSITY , "Input Error: total density {}/m^3 exceeds realistic values; check values or units." , total_density) ;
311315
312316 let energy_barrier_thickness = 1. /total_density. cbrt ( ) /SQRTPI * 2. ;
313317
@@ -476,6 +480,7 @@ impl Geometry for Mesh2D {
476480 y3* length_unit,
477481 ) ;
478482 let total_density: f64 = densities. iter ( ) . sum ( ) ;
483+ assert ! ( total_density < MAX_DENSITY , "Input Error: total density {}/m^3 exceeds realistic values; check values or units." , total_density) ;
479484 let concentrations: Vec < f64 > = densities. iter ( ) . map ( |& density| density/total_density) . collect :: < Vec < f64 > > ( ) ;
480485
481486 cells. push ( Cell2D :: new ( coordinate_set_converted, densities, concentrations, ck) ) ;
0 commit comments