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; }
Metric Filler::get_metric(double x,double y,double z){ Metric m; STensor3 m2; if(CTX::instance()->mesh.smoothCrossField){ m2 = Frame_field::findCross(x,y,z); } else m2 = Frame_field::search(x,y,z); m.set_m11(m2.get_m11()); m.set_m21(m2.get_m21()); m.set_m31(m2.get_m31()); m.set_m12(m2.get_m12()); m.set_m22(m2.get_m22()); m.set_m32(m2.get_m32()); m.set_m13(m2.get_m13()); m.set_m23(m2.get_m23()); m.set_m33(m2.get_m33()); return m; }