本文整理汇总了C++中GeometryType类的典型用法代码示例。如果您正苦于以下问题:C++ GeometryType类的具体用法?C++ GeometryType怎么用?C++ GeometryType使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了GeometryType类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IndexSet
/// @brief
/// @todo Doc me!
/// @param
IndexSet(const CpGridData& grid)
: grid_(grid)
{
GeometryType t;
t.makeCube(3);
geom_types_[0].push_back(t);
t.makeCube(0);
geom_types_[3].push_back(t);
}
示例2:
ElementVariant PiecewiseConstantDiscontinuousScalarSpaceBarycentric<
BasisFunctionType>::elementVariant(const Entity<0> &element) const {
GeometryType type = element.type();
if (type.dim() == 1)
return 2;
if (type.isTriangle())
return 3;
else
return 4;
}
示例3: to_polygon_wkb
wkb_buffer_ptr to_polygon_wkb( GeometryType const& g, wkbByteOrder byte_order)
{
unsigned num_points = g.size();
assert(num_points > 1);
using point_type = std::pair<double,double>;
using linear_ring = std::vector<point_type>;
boost::ptr_vector<linear_ring> rings;
double x = 0;
double y = 0;
std::size_t size = 1 + 4 + 4 ; // byteOrder + wkbType + numRings
for (unsigned i=0; i< num_points; ++i)
{
unsigned command = g.vertex(i,&x,&y);
if (command == SEG_MOVETO)
{
rings.push_back(new linear_ring); // start new loop
rings.back().push_back(std::make_pair(x,y));
size += 4; // num_points
size += 2 * 8; // point
}
else if (command == SEG_LINETO)
{
rings.back().push_back(std::make_pair(x,y));
size += 2 * 8; // point
}
}
unsigned num_rings = rings.size();
wkb_buffer_ptr wkb = std::make_unique<wkb_buffer>(size);
wkb_stream ss(wkb->buffer(), wkb->size());
ss.write(reinterpret_cast<char*>(&byte_order),1);
int type = static_cast<int>(mapnik::geometry_type::types::Polygon);
write(ss,type,4,byte_order);
write(ss,num_rings,4,byte_order);
for ( linear_ring const& ring : rings)
{
unsigned num_ring_points = ring.size();
write(ss,num_ring_points,4,byte_order);
for ( point_type const& pt : ring)
{
write(ss,pt.first,8,byte_order);
write(ss,pt.second,8,byte_order);
}
}
assert(ss.good());
return std::move(wkb);
}
示例4: to_point_wkb
wkb_buffer_ptr to_point_wkb( GeometryType const& g, wkbByteOrder byte_order)
{
assert(g.size() == 1);
std::size_t size = 1 + 4 + 8*2 ; // byteOrder + wkbType + Point
wkb_buffer_ptr wkb = std::make_unique<wkb_buffer>(size);
wkb_stream ss(wkb->buffer(), wkb->size());
ss.write(reinterpret_cast<char*>(&byte_order),1);
int type = static_cast<int>(mapnik::geometry_type::types::Point);
write(ss,type,4,byte_order);
double x = 0;
double y = 0;
g.vertex(0,&x,&y);
write(ss,x,8,byte_order);
write(ss,y,8,byte_order);
assert(ss.good());
return std::move(wkb);
}
示例5: to_polygon_wkb
wkb_buffer_ptr to_polygon_wkb( GeometryType const& g, wkbByteOrder byte_order)
{
unsigned num_points = g.size();
assert(num_points > 1);
typedef std::pair<double,double> point_type;
typedef std::vector<point_type> linear_ring;
boost::ptr_vector<linear_ring> rings;
double x = 0;
double y = 0;
std::size_t size = 1 + 4 + 4 ; // byteOrder + wkbType + numRings
for (unsigned i=0; i< num_points; ++i)
{
unsigned command = g.vertex(i,&x,&y);
if (command == SEG_MOVETO)
{
rings.push_back(new linear_ring); // start new loop
rings.back().push_back(std::make_pair(x,y));
size += 4; // num_points
size += 2 * 8; // point
}
else if (command == SEG_LINETO)
{
rings.back().push_back(std::make_pair(x,y));
size += 2 * 8; // point
}
}
unsigned num_rings = rings.size();
wkb_buffer_ptr wkb = boost::make_shared<wkb_buffer>(size);
boost::interprocess::bufferstream ss(wkb->buffer(), wkb->size(), std::ios::out | std::ios::binary);
ss.write(reinterpret_cast<char*>(&byte_order),1);
int type = static_cast<int>(mapnik::Polygon);
write(ss,type,4,byte_order);
write(ss,num_rings,4,byte_order);
BOOST_FOREACH ( linear_ring const& ring, rings)
{
unsigned num_ring_points = ring.size();
write(ss,num_ring_points,4,byte_order);
BOOST_FOREACH ( point_type const& pt, ring)
{
write(ss,pt.first,8,byte_order);
write(ss,pt.second,8,byte_order);
}
示例6: to_point_wkb
wkb_buffer_ptr to_point_wkb( GeometryType const& g, wkbByteOrder byte_order)
{
assert(g.size() == 1);
std::size_t size = 1 + 4 + 8*2 ; // byteOrder + wkbType + Point
wkb_buffer_ptr wkb = boost::make_shared<wkb_buffer>(size);
boost::interprocess::bufferstream ss(wkb->buffer(), wkb->size(), std::ios::out | std::ios::binary);
ss.write(reinterpret_cast<char*>(&byte_order),1);
int type = static_cast<int>(mapnik::Point);
write(ss,type,4,byte_order);
double x = 0;
double y = 0;
g.vertex(0,&x,&y);
write(ss,x,8,byte_order);
write(ss,y,8,byte_order);
assert(ss.good());
return wkb;
}
示例7: CalculateStress
void Hyperelastic2D::CalculateMaterialResponse( const Vector& StrainVector,
const Matrix& DeformationGradient,
Vector& StressVector,
Matrix& AlgorithmicTangent,
const ProcessInfo& CurrentProcessInfo,
const Properties& props,
const GeometryType& geom,
const Vector& ShapeFunctionsValues,
bool CalculateStresses,
int CalculateTangent,
bool SaveInternalVariables)
{
mA=geom.Area();//props[AREA]; // to check
mcurrentThickness = (mA0*mThickness)/mA; // to check
// RETRACTION ///////////////
if (CurrentProcessInfo[TIME] > mRetractionTime)
//if (CurrentProcessInfo[TIME] > 0.1) //0.01
{
mRetraction=mAlpha*CurrentProcessInfo[TIME]; // [DELTA_TIME]
//KRATOS_WATCH("retraction");
}
else
{
mRetraction=0.0;
}
//CalculateElasticMatrix(mCtangent, props[YOUNG_MODULUS], props[POISSON_RATIO]);
CalculateStress(StrainVector, StressVector);
CalculateConstitutiveMatrix(StrainVector, Ctang); // nelson
//CalculateConstitutiveMatrix(StrainVector, rResult); // nelson
// mA=geom.Area();//props[AREA]; // to check
//
// mcurrentThickness = (mA0*mThickness)/mA; // to check
// // RETRACTION ///////////////
// if (CurrentProcessInfo[TIME] > 0.0000001) //0.01
// {
// mRetraction=mAlpha*CurrentProcessInfo[TIME]; // [DELTA_TIME]
// //KRATOS_WATCH("retraction");
// }
// else
// {
// mRetraction=0.0;
// }
// //KRATOS_WATCH(CurrentProcessInfo[TIME]);
// //KRATOS_WATCH(mRetraction);
// // RETRACTION ///////////////
// //KRATOS_WATCH(mA0);
// //KRATOS_WATCH(mA);
// //KRATOS_WATCH(mThickness);
// //KRATOS_WATCH(mcurrentThickness);
}
示例8: noalias
/**
* TO BE TESTED!!!
*/
void Hyperelastic2D::InitializeMaterial( const Properties& props,
const GeometryType& geom,
const Vector& ShapeFunctionsValues )
{
//mCurrentStress = ZeroVector(6);
mMU = props[MU]; // shear modulus
mK = props[BULK_MODULUS]; // bulk modulus
mE = props[YOUNG_MODULUS];
mNU = props[POISSON_RATIO];
mThickness = props[THICKNESS]; // to check
mA0= geom.Area(); //geom[A0]; // to check
mA= geom.Area(); // JUST A TEST, need to check if it will be updated later!!!
mAlpha=props[ALPHA]; // angle used for retraction
mRetractionTime=props[RETRACTION_TIME]; // Time to start retraction
/*mCtangent.resize(6,6,false);
noalias(mCtangent) = ZeroMatrix(6,6);*/
mMaterialParameters = props[MATERIAL_PARAMETERS];
mInSituStress = ZeroVector(6);
//CalculateElasticMatrix(mCtangent, props[YOUNG_MODULUS], props[POISSON_RATIO]);
// CalculateElasticMatrix(mCtangent, props[MATERIAL_PARAMETERS][0], props[MATERIAL_PARAMETERS][1]);
}
示例9: to_line_string_wkb
wkb_buffer_ptr to_line_string_wkb( GeometryType const& g, wkbByteOrder byte_order)
{
unsigned num_points = g.size();
assert(num_points > 1);
std::size_t size = 1 + 4 + 4 + 8*2*num_points ; // byteOrder + wkbType + numPoints + Point*numPoints
wkb_buffer_ptr wkb = std::make_unique<wkb_buffer>(size);
wkb_stream ss(wkb->buffer(), wkb->size());
ss.write(reinterpret_cast<char*>(&byte_order),1);
int type = static_cast<int>(mapnik::geometry_type::types::LineString);
write(ss,type,4,byte_order);
write(ss,num_points,4,byte_order);
double x = 0;
double y = 0;
for (unsigned i=0; i< num_points; ++i)
{
g.vertex(i,&x,&y);
write(ss,x,8,byte_order);
write(ss,y,8,byte_order);
}
assert(ss.good());
return std::move(wkb);
}
示例10:
void Plasticity2D::InitializeMaterial( const Properties& props,
const GeometryType& geom,
const Vector& ShapeFunctionsValues )
{
mE = (*mpProperties)[YOUNG_MODULUS];
mNU = (*mpProperties)[POISSON_RATIO];
mDE = (*mpProperties)[DENSITY];
KRATOS_WATCH(mpFluencyCriteria)
mpFluencyCriteria->InitializeMaterial(*mpProperties);
double he = geom.Length();
mpFluencyCriteria->GetValue(he);
}
示例11: to_wkb
wkb_buffer_ptr to_wkb(GeometryType const& g, wkbByteOrder byte_order )
{
wkb_buffer_ptr wkb;
switch (g.type())
{
case mapnik::geometry_type::types::Point:
wkb = to_point_wkb(g, byte_order);
break;
case mapnik::geometry_type::types::LineString:
wkb = to_line_string_wkb(g, byte_order);
break;
case mapnik::geometry_type::types::Polygon:
wkb = to_polygon_wkb(g, byte_order);
break;
default:
break;
}
return wkb;
}
示例12: observeOneFullSweep
bool observeOneFullSweep(
IoInputType& io,
const GeometryType& geometry,
const ModelType& model,
const PsimagLite::String& obsOptions,
bool hasTimeEvolution)
{
bool verbose = false;
typedef typename SparseMatrixType::value_type FieldType;
typedef Observer<FieldType,VectorWithOffsetType,ModelType,IoInputType>
ObserverType;
typedef ObservableLibrary<ObserverType,TargettingType> ObservableLibraryType;
SizeType n = geometry.numberOfSites();
//PsimagLite::String sSweeps = "sweeps=";
//PsimagLite::String::SizeTypeype begin = obsOptions.find(sSweeps);
//if (begin != PsimagLite::String::npos) {
// PsimagLite::String sTmp = obsOptions.substr(begin+sSweeps.length(),PsimagLite::String::npos);
//std::cout<<"sTmp="<<sTmp<<"\n";
// n = atoi(sTmp.c_str());
//}
ObservableLibraryType observerLib(io,n,hasTimeEvolution,model,verbose);
bool ot = false;
if (obsOptions.find("ot")!=PsimagLite::String::npos || obsOptions.find("time")!=PsimagLite::String::npos) ot = true;
if (hasTimeEvolution && ot) {
observerLib.measureTime("superDensity");
observerLib.measureTime("nupNdown");
observerLib.measureTime("nup+ndown");
if (obsOptions.find("sz")!=PsimagLite::String::npos) observerLib.measureTime("sz");
}
if (hasTimeEvolution) observerLib.setBrackets("time","time");
const PsimagLite::String& modelName = model.params().model;
SizeType rows = n; // could be n/2 if there's enough symmetry
// Immm supports only onepoint:
if (modelName=="Immm" && obsOptions!="onepoint") {
PsimagLite::String str(__FILE__);
str += " " + ttos(__LINE__) + "\n";
str += "Model Immm only supports onepoint\n";
throw PsimagLite::RuntimeError(str.c_str());
}
SizeType numberOfDofs = dofsFromModelName(model);
if (!hasTimeEvolution && obsOptions.find("onepoint")!=PsimagLite::String::npos) {
observerLib.measureTheOnePoints(numberOfDofs);
}
if (modelName.find("Heisenberg")==PsimagLite::String::npos) {
if (obsOptions.find("cc")!=PsimagLite::String::npos) {
observerLib.measure("cc",rows,n);
}
if (obsOptions.find("nn")!=PsimagLite::String::npos) {
observerLib.measure("nn",rows,n);
}
}
if (obsOptions.find("szsz")!=PsimagLite::String::npos) {
observerLib.measure("szsz",rows,n);
}
if (modelName.find("FeAsBasedSc")!=PsimagLite::String::npos ||
modelName.find("FeAsBasedScExtended")!=PsimagLite::String::npos ||
modelName.find("HubbardOneBand")!=PsimagLite::String::npos) {
bool dd4 = (obsOptions.find("dd4")!=PsimagLite::String::npos);
if (obsOptions.find("dd")!=PsimagLite::String::npos && !dd4) { // &&
//geometry.label(0).find("ladder")!=PsimagLite::String::npos) {
observerLib.measure("dd",rows,n);
}
// FOUR-POINT DELTA-DELTA^DAGGER:
if (dd4 && geometry.label(0).find("ladder")!=PsimagLite::String::npos) {
observerLib.measure("dd4",rows,n);
} // if dd4
}
if (modelName.find("HubbardOneBand")!=PsimagLite::String::npos &&
obsOptions.find("multi")!=PsimagLite::String::npos) {
observerLib.measure("multi",rows,n);
}
if (obsOptions.find("s+s-")!=PsimagLite::String::npos) {
observerLib.measure("s+s-",rows,n);
}
if (obsOptions.find("ss")!=PsimagLite::String::npos) {
observerLib.measure("ss",rows,n);
}
return observerLib.endOfData();
}
示例13: contains
bool contains(GeometryType gt) { return gt.dim() == dim; }
示例14: Cel
void IsotropicRankineDamage2D::CalculateMaterialResponse(const Vector& StrainVector,
const Matrix& DeformationGradient,
Vector& StressVector,
Matrix& AlgorithmicTangent,
const ProcessInfo& CurrentProcessInfo,
const Properties& props,
const GeometryType& geom,
const Vector& ShapeFunctionsValues,
bool CalculateStresses,
int CalculateTangent,
bool SaveInternalVariables)
{
//get material parameters
const double E = props[YOUNG_MODULUS];
const double NU = props[POISSON_RATIO];
const double Gf = props[FRACTURE_ENERGY]; //***************************
const double sigma0 = props[YIELD_STRESS]; //***************************
const double r0 = sigma0; //***************************
const double retat = props[VISCOSITY];
//compute elastic stress
Matrix Cel(3,3);
Vector stress(3);
CalculateElasticMatrix(Cel, E, NU);
noalias(stress) = prod(Cel,StrainVector);
//compute stress max eigenvalue
const double sigma_m = 0.5*(stress[0]+ stress[1]);
const double R = sqrt(stress[2]*stress[2] + 0.25*(stress[0]-stress[1])*(stress[0]-stress[1]) );
double smax = sigma_m + R;
//compute tau
double tau = smax;
if(tau < 0) tau=0.0;
//compute actualized damage indicator
double r = mrold;
if(tau > r)
{
if(retat == 0) r=tau;
else
{
double dt = CurrentProcessInfo[DELTA_TIME];
double ratio = dt/retat;
r = std::max( r , (mrold + ratio*tau)/(1.0+ratio) );
}
}
//compute element lenght
double he=0.0;
for(unsigned int i=0; i<geom.size(); i++)
{
const double hn = geom[i].GetSolutionStepValue(NODAL_H);
he += hn*ShapeFunctionsValues[i];
}
// double A = geom.Area();
// const double he = sqrt(2.0*A);
const double lch=2.0*he;
const double ls =2.0*E*Gf/(sigma0*sigma0);
double Hs = lch/(ls -lch);
if(Hs < 0.0) Hs=1.0e10;
// KRATOS_WATCH(Hs);
double d=0.0;
if(r>=r0)
d = 1.0 - r0/r*exp(-2.0*Hs*(r-r0)/r0);
if(d > 0.9999)
d = 0.9999;
// KRATOS_WATCH(d);
//write outputs as needed
if(CalculateStresses == true)
noalias(StressVector) = (1.0-d)*stress;
if(CalculateTangent == 1)
noalias(AlgorithmicTangent) = (1.0-d)*Cel;
//keep trace of internal variables if allowed, otherwise reset them
if(SaveInternalVariables == false)
mr = mrold;
else
{
mr = r;
//save variable for output
md=d;
}
// KRATOS_WATCH(md);
//std::cout << this << " inside calculate md " << md << std::endl;
}