diff --git a/Mesh/simple3D.cpp b/Mesh/simple3D.cpp index 8183bfb98a83f1bac29c94009be101af9c0d9d81..87e81067654ce30a4c74aed3eb5bbfb12e118dce 100644 --- a/Mesh/simple3D.cpp +++ b/Mesh/simple3D.cpp @@ -495,6 +495,40 @@ Metric Filler::get_metric(double x,double y,double z){ return m; } +Metric Filler::get_metric(double x,double y,double z,GEntity* ge){ + Metric m; + SMetric3 temp; + SVector3 v1,v2,v3; + Field* field; + FieldManager* manager; + + v1 = SVector3(1.0,0.0,0.0); + v2 = SVector3(0.0,1.0,0.0); + v3 = SVector3(0.0,0.0,1.0); + + manager = ge->model()->getFields(); + if(manager->getBackgroundField()>0){ + field = manager->get(manager->getBackgroundField()); + if(field){ + (*field)(x,y,z,temp,ge); + } + } + + m.set_m11(v1.x()); + m.set_m21(v1.y()); + m.set_m31(v1.z()); + + m.set_m12(v2.x()); + m.set_m22(v2.y()); + m.set_m32(v2.z()); + + m.set_m13(v3.x()); + m.set_m23(v3.y()); + m.set_m33(v3.z()); + + return m; +} + double Filler::get_size(double x,double y,double z){ return Size_field::search(x,y,z); } diff --git a/Mesh/simple3D.h b/Mesh/simple3D.h index 2736df31657a1b85e772798412ad48854df0ff7f..6fd3f060105caadd728d9cbabd609b47d25f1be5 100644 --- a/Mesh/simple3D.h +++ b/Mesh/simple3D.h @@ -18,6 +18,7 @@ class Filler{ private: static std::vector<MVertex*> new_vertices; Metric get_metric(double,double,double); + Metric get_metric(double,double,double,GEntity*); double get_size(double,double,double); double get_size(double,double,double,GEntity*); bool inside_domain(MElementOctree*,double,double,double);