New question #698253 on Yade:
https://answers.launchpad.net/yade/+question/698253
Hi,
I have a problem with the access to some properties which are assigned to a
particle (sphere). Could you help me to solve the problem? Here are segments of
code.
From .hpp file:
class CpmMat : public FrictMat {
public:
shared_ptr<State> newAssocState() const override { return
shared_ptr<State>(new CpmState); }
bool stateTypeOk(State* s) const override { return
(bool)dynamic_cast<CpmState*>(s); }
// clang-format off
YADE_CLASS_BASE_DOC_ATTRS_CTOR(CpmMat,FrictMat,"Concrete material, for
use with other Cpm classes. \n\n..
note::\n\n\t:yref:`Density<Material::density>` is initialized to 4800
kgm⁻³automatically, which gives approximate 2800 kgm⁻³ on 0.5 density
packing.\n\nConcrete Particle Model (CPM)\n\n\n:yref:`CpmMat` is particle
material, :yref:`Ip2_CpmMat_CpmMat_CpmPhys` averages two particles' materials,
creating :yref:`CpmPhys`, which is then used in interaction resultion by
:yref:`Law2_ScGeom_CpmPhys_Cpm`. :yref:`CpmState` is associated to
:yref:`CpmMat` and keeps state defined on particles rather than interactions
(such as number of completely damaged interactions).\n\nThe model is contained
in externally defined macro CPM_MATERIAL_MODEL, which features damage in
tension, plasticity in shear and compression and rate-dependence. For
commercial reasons, rate-dependence and compression-plasticity is not present
in reduced version of the model, used when CPM_MATERIAL_MODEL is not defined.
The full model will be described in detail in my (Václav Šmilauer) thesis along
with calibration procedures (rigidity, poisson's ratio, compressive/tensile
strength ratio, fracture energy, behavior under confinement, rate-dependent
behavior).\n\nEven the public model is useful enough to run simulation on
concrete samples, such as :ysrc:`uniaxial tension-compression
test<examples/concrete/uniax.py>`.",
((Real,sigOld,0.,,"normal stress from previous iteration [Pa]"))
((Real,tauOld,0.,,"shear stress from previous iteration [Pa]"))
((Real,Sy_0,NaN,,"initial yield strength [Pa]"))
((Real,oldSy,0.,,"yield point form previous iteration [Pa]"))
((Real,cumStr,0.,,"cummulative plastic strain [-]"))
((Real,H,0.,,"hardening parameter [Pa]"))
((Real,density,2700.,,"density [kg/m3]"))
((Real,CP1,0.,,"heat capacity constant"))
((Real,CP2,0.,,"heat capacity constant"))
((Real,CP3,0.,,"heat capacity constant"))
((Real,K1,0.,,"thermal conductivity constant"))
((Real,K2,0.,,"thermal conductivity constant"))
((Real,K3,0.,,"thermal conductivity constant"))
((Real,K4,0.,,"thermal conductivity constant")),
createIndex();
And from .cpp file:
FOREACH(shared_ptr<Body> B, *scene2->bodies)
{
CpmPhys* mat = dynamic_cast<CpmPhys*>(B->material.get());
const Real& CP1(mat->CP1);
const Real& CP2(B->material.CP2);
const Real& CP3(B->material.CP3);
const Real& K1(B->material.K1);
const Real& K2(B->material.K2);
const Real& K3(B->material.K3);
const Real& K4(B->material.K4);
if (!B) continue;
const Body::id_t& id = B->getId();
// add damaged contacts that have already been deleted
CpmState* state = dynamic_cast<CpmState*>(B->state.get());
if (!state) continue;
state->stress = bodyStats[id].stress;
Sphere* sphere = dynamic_cast<Sphere*>(B->shape.get()); // from
that ok???
if (!sphere) continue;
Real& r = sphere->radius;
state->stress = bodyStats[id].stress / (4 / 3. * Mathr::PI * r
* r * r / .62) * .5;
//state->oldTemp = state->temp; // przypisanie wartosci
temperatury
state->Cp = CP1 + CP2 * state->temp + CP3 * pow(state->temp,2);
state->k = K1 + K2 * state->temp + K3 * pow(state->temp, 2) +
K4 * pow(state->temp, 3);
}
And here is the example message form terminal:
/home/przemek/DEMlab/trunk/pkg/dem/ConcretePM.cpp:492:33: error: ‘class
boost::shared_ptr<yade::Material>’ has no member named ‘K2’
492 | const Real& K2(B->material.K2);
Have you any suggestions?
BR
Przemek
--
You received this question notification because your team yade-users is
an answer contact for Yade.
_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp