double QTrPlaneStrain :: SpatialLocalizerI_giveDistanceFromParametricCenter(const FloatArray &coords) { FloatArray lcoords(3), gcoords; double dist; int size, gsize; lcoords.at(1) = lcoords.at(2) = lcoords.at(3) = 1. / 3.; this->computeGlobalCoordinates(gcoords, lcoords); if ( ( size = coords.giveSize() ) < ( gsize = gcoords.giveSize() ) ) { _error("SpatialLocalizerI_giveDistanceFromParametricCenter: coordinates size mismatch"); } if ( size == gsize ) { dist = coords.distance(gcoords); } else { FloatArray helpCoords = coords; helpCoords.resize(gsize); dist = helpCoords.distance(gcoords); } return dist; }
double Tetrah1_ht :: SpatialLocalizerI_giveDistanceFromParametricCenter(const FloatArray &coords) { FloatArray lcoords(3), gcoords; double dist; int size, gsize; lcoords.zero(); this->computeGlobalCoordinates(gcoords, lcoords); if ( ( size = coords.giveSize() ) < ( gsize = gcoords.giveSize() ) ) { OOFEM_ERROR("coordinates size mismatch"); } if ( size == gsize ) { dist = coords.distance(gcoords); } else { FloatArray helpCoords = coords; helpCoords.resizeWithValues(gsize); dist = helpCoords.distance(gcoords); } return dist; }
double QBrick1_ht :: SpatialLocalizerI_giveDistanceFromParametricCenter(const FloatArray &coords) { FloatArray lcoords(3), gcoords; lcoords.zero(); this->computeGlobalCoordinates(gcoords, lcoords); return gcoords.distance(coords); }
double Tr2Shell7 :: computeAreaAround(GaussPoint *gp, double xi) { FloatArray G1, G2, temp; FloatMatrix Gcov; FloatArray lcoords(3); lcoords.at(1) = gp->giveNaturalCoordinate(1); lcoords.at(2) = gp->giveNaturalCoordinate(2); lcoords.at(3) = xi; this->evalInitialCovarBaseVectorsAt(lcoords, Gcov); G1.beColumnOf(Gcov, 1); G2.beColumnOf(Gcov, 2); temp.beVectorProductOf(G1, G2); double detJ = temp.computeNorm(); return detJ *gp->giveWeight(); }