diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp index 0dc3fb162eb45a7b3c67a98650baad9b202f23fc..240664c35b3c2ac4c159e9ece0219739708e14c9 100644 --- a/Mesh/Field.cpp +++ b/Mesh/Field.cpp @@ -239,7 +239,7 @@ class StructuredField : public Field } }; -class UTMField : public Field +/*class UTMField : public Field { int iField, zone; double a, b, n, n2, n3, n4, n5, e, e2, e1, e12, e13, e14, J1, J2, J3, J4, @@ -325,7 +325,7 @@ class UTMField : public Field if(!field || iField == id) return MAX_LC; return (*field)(utm_x, utm_y, 0); } -}; +};*/ class LonLatField : public Field { @@ -371,57 +371,6 @@ class LonLatField : public Field } }; -class XY2d2LonLatField : public Field -{ - int iField; - double R, phiP, thetaP; - public: - std::string getDescription() - { - return "Evaluate Field[IField] in geographic coordinates (longitude, latitude) from x and y projected on a plane\n\n"; - } - XY2d2LonLatField() - { - iField = 1; - options["IField"] = new FieldOptionInt - (iField, "Index of the field to evaluate."); - R = 6371e3; - phiP = 0; - thetaP = 0; - - options["Radius"] = new FieldOptionDouble - (R, "radius of the sphere"); - options["Phi"] = new FieldOptionDouble - (phiP, "longitude of the projection point (in degrees)"); - options["Theta"] = new FieldOptionDouble - (thetaP, "latitude of the projection point (in degrees)"); - } - const char *getName() - { - return "XY2d2LonLat"; - } - double operator() (double x2d, double y2d, double z2d, GEntity *ge=0) - { - Field *field = GModel::current()->getFields()->get(iField); - if(!field || iField == id) return MAX_LC; - double phi = phiP*M_PI/180; - double theta = thetaP*M_PI/180; - double pOx = cos(theta)*cos(phi)*R; - double pOy = cos(theta)*sin(phi)*R; - double pOz = sin(theta)*R; - double pPhiX = -sin(phi); - double pPhiY = cos(phi); - double pPhiZ = 0; - double pThetaX = -sin(theta)*cos(phi); - double pThetaY = -sin(theta)*sin(phi); - double pThetaZ = cos(theta); - - double x = pPhiX * x2d + pThetaX * y2d + pOx; - double y = pPhiY * x2d + pThetaY * y2d + pOy; - double z = pPhiZ * x2d + pThetaZ * y2d + pOz; - return (*field)(atan2(y, x), asin(z / R), 0); - } -}; class BoxField : public Field { @@ -2092,16 +2041,6 @@ void BoundaryLayerField::operator() (double x, double y, double z, } #endif -template<class F> class FieldFactoryT : public FieldFactory { - public: - Field * operator()() { return new F; } -}; - -template<class F> Field *field_factory() -{ - return new F(); -}; - FieldManager::FieldManager() { map_type_name["Structured"] = new FieldFactoryT<StructuredField>(); @@ -2114,7 +2053,6 @@ FieldManager::FieldManager() map_type_name["Cylinder"] = new FieldFactoryT<CylinderField>(); map_type_name["Frustum"] = new FieldFactoryT<FrustumField>(); map_type_name["LonLat"] = new FieldFactoryT<LonLatField>(); - map_type_name["XY2d2LonLat"] = new FieldFactoryT<XY2d2LonLatField>(); #if defined(HAVE_POST) map_type_name["PostView"] = new FieldFactoryT<PostViewField>(); #endif @@ -2123,7 +2061,6 @@ FieldManager::FieldManager() map_type_name["Min"] = new FieldFactoryT<MinField>(); map_type_name["MinAniso"] = new FieldFactoryT<MinAnisoField>(); map_type_name["Max"] = new FieldFactoryT<MaxField>(); - map_type_name["UTM"] = new FieldFactoryT<UTMField>(); map_type_name["Laplacian"] = new FieldFactoryT<LaplacianField>(); map_type_name["Mean"] = new FieldFactoryT<MeanField>(); map_type_name["Curvature"] = new FieldFactoryT<CurvatureField>(); diff --git a/Mesh/Field.h b/Mesh/Field.h index 743267a7b788c909ab4e09d61c54affe885b8b74..9cc0992dbc69b5cbb65967953c6a360aa9f75e5d 100644 --- a/Mesh/Field.h +++ b/Mesh/Field.h @@ -278,4 +278,9 @@ class FieldCallbackGeneric : public FieldCallback { } }; +template<class F> class FieldFactoryT : public FieldFactory { + public: + Field * operator()() { return new F; } +}; + #endif