Forráskód Böngészése

add total sphere area correction

Konstantin Ladutenko 8 éve
szülő
commit
25ff6e2312
2 módosított fájl, 8 hozzáadás és 2 törlés
  1. 2 2
      examples/example-eval-force.cc
  2. 6 0
      src/shell-generator.cc

+ 2 - 2
examples/example-eval-force.cc

@@ -48,10 +48,10 @@ int main(int argc, char *argv[]) {
     auto shift = 0.0;
     shell_generator::ShellGenerator shell;
     shell.Init();
-    for (int refines=0; refines<7; ++refines) {
+    for (int refines=0; refines<4; ++refines) {
       shell.Refine();
     
-    for (int i=0; i<5; ++i) {
+    for (int i=0; i<1; ++i) {
       auto integration_radius = 10+20*i;
       outer_width = 10; //+10*i; //nm  Si
       multi_layer_mie.ClearAllDesign();

+ 6 - 0
src/shell-generator.cc

@@ -452,10 +452,16 @@ namespace shell_generator {
       per_face_area_.push_back(area);
       //std::cout << "Area " <<area<<std::endl;
     }  // end for face in faces_
+    double total_flat_area = 0.0;
+    for (auto face:per_face_area_)
+      total_flat_area += face;
     auto scale = norm(vertices_[0]);
     const double pi = 3.1415926535897932384626433832795;
     double area = 4.0*pi*pow2(scale); 
     face_area_ = area/faces_.size();
+    double area_scale = area/total_flat_area;
+    for (auto& face:per_face_area_)
+      face *= area_scale;
     
     
     for(auto& vert : face_centers_){