yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #01253
[svn] r1777 - in trunk: extra extra/usct gui/py
Author: eudoxos
Date: 2009-05-24 12:53:29 +0200 (Sun, 24 May 2009)
New Revision: 1777
Modified:
trunk/extra/Brefcom.cpp
trunk/extra/Brefcom.hpp
trunk/extra/BrefcomTestGen.cpp
trunk/extra/usct/UniaxialStrainControlledTest.cpp
trunk/gui/py/PythonUI_rc.py
trunk/gui/py/_eudoxos.cpp
Log:
Getting rid of the Brefcom name, classes renamed as follows (moving files around will follow)
BrefcomMakeContact Ip2_CpmMat_CpmMat_CpmPhys
BrefcomContact CpmPhys
BrefcomPhysParams CpmMat
ef2_Spheres_Brefcom_BrefcomLaw Law2_Dem3DofGeom_CpmPhys_Cpm
GLDrawBrefcomContact GLDrawCpmPhys
BrefcomDamageColorizer CpmPhysDamageColorizer
BrefcomGlobalCharacteristics CpmGlobalCharacteristics
Modified: trunk/extra/Brefcom.cpp
===================================================================
--- trunk/extra/Brefcom.cpp 2009-05-24 10:34:22 UTC (rev 1776)
+++ trunk/extra/Brefcom.cpp 2009-05-24 10:53:29 UTC (rev 1777)
@@ -7,20 +7,18 @@
#include<yade/lib-opengl/GLUtils.hpp>
#include<yade/pkg-dem/DemXDofGeom.hpp>
+YADE_PLUGIN("Ip2_CpmMat_CpmMat_CpmPhys","CpmPhys","GLDrawCpmPhys","CpmPhysDamageColorizer", "CpmMat", "CpmGlobalCharacteristics", "Law2_Dem3DofGeom_CpmPhys_Cpm");
+CREATE_LOGGER(CpmGlobalCharacteristics);
-YADE_PLUGIN("BrefcomMakeContact","BrefcomContact"/*,"BrefcomLaw"*/,"GLDrawBrefcomContact","BrefcomDamageColorizer", "BrefcomPhysParams", "BrefcomGlobalCharacteristics", "ef2_Spheres_Brefcom_BrefcomLaw" /* ,"BrefcomStiffnessComputer"*/ );
-
-CREATE_LOGGER(BrefcomGlobalCharacteristics);
-
-void BrefcomGlobalCharacteristics::compute(MetaBody* rb, bool useMaxForce){
+void CpmGlobalCharacteristics::compute(MetaBody* rb, bool useMaxForce){
rb->bex.sync();
// 1. reset volumetric strain (cummulative in the next loop)
// 2. get maximum force on a body and sum of all forces (for averaging)
Real sumF=0,maxF=0,currF;
FOREACH(const shared_ptr<Body>& b, *rb->bodies){
- BrefcomPhysParams* bpp(YADE_CAST<BrefcomPhysParams*>(b->physicalParameters.get()));
+ CpmMat* bpp(YADE_CAST<CpmMat*>(b->physicalParameters.get()));
bpp->epsVolumetric=0;
bpp->numContacts=0;
currF=rb->bex.getForce(b->id).Length(); maxF=max(currF,maxF); sumF+=currF;
@@ -32,10 +30,10 @@
Real maxContactF=0;
FOREACH(const shared_ptr<Interaction>& I, *rb->interactions){
if(!I->isReal) continue;
- shared_ptr<BrefcomContact> BC=YADE_PTR_CAST<BrefcomContact>(I->interactionPhysics); assert(BC);
+ shared_ptr<CpmPhys> BC=YADE_PTR_CAST<CpmPhys>(I->interactionPhysics); assert(BC);
maxContactF=max(maxContactF,max(BC->Fn,BC->Fs.Length()));
- BrefcomPhysParams* bpp1(YADE_CAST<BrefcomPhysParams*>(Body::byId(I->getId1())->physicalParameters.get()));
- BrefcomPhysParams* bpp2(YADE_CAST<BrefcomPhysParams*>(Body::byId(I->getId2())->physicalParameters.get()));
+ CpmMat* bpp1(YADE_CAST<CpmMat*>(Body::byId(I->getId1())->physicalParameters.get()));
+ CpmMat* bpp2(YADE_CAST<CpmMat*>(Body::byId(I->getId2())->physicalParameters.get()));
bpp1->epsVolumetric+=BC->epsN; bpp1->numContacts+=1;
bpp2->epsVolumetric+=BC->epsN; bpp2->numContacts+=1;
}
@@ -43,9 +41,9 @@
FOREACH(const shared_ptr<Interaction>& I, *rb->interactions){
if(!I->isReal) continue;
- shared_ptr<BrefcomContact> BC=YADE_PTR_CAST<BrefcomContact>(I->interactionPhysics); assert(BC);
- BrefcomPhysParams* bpp1(YADE_CAST<BrefcomPhysParams*>(Body::byId(I->getId1())->physicalParameters.get()));
- BrefcomPhysParams* bpp2(YADE_CAST<BrefcomPhysParams*>(Body::byId(I->getId2())->physicalParameters.get()));
+ shared_ptr<CpmPhys> BC=YADE_PTR_CAST<CpmPhys>(I->interactionPhysics); assert(BC);
+ CpmMat* bpp1(YADE_CAST<CpmMat*>(Body::byId(I->getId1())->physicalParameters.get()));
+ CpmMat* bpp2(YADE_CAST<CpmMat*>(Body::byId(I->getId2())->physicalParameters.get()));
Real epsVolAvg=.5*((3./bpp1->numContacts)*bpp1->epsVolumetric+(3./bpp2->numContacts)*bpp2->epsVolumetric);
BC->epsTrans=(epsVolAvg-BC->epsN)/2.;
//TRVAR5(I->getId1(),I->getId2(),BC->epsTrans,(3./bpp1->numContacts)*bpp1->epsVolumetric,(3./bpp2->numContacts)*bpp2->epsVolumetric);
@@ -53,7 +51,7 @@
}
#if 0
FOREACH(const shared_ptr<Body>& b, *rb->bodies){
- BrefcomPhysParams* bpp(YADE_PTR_CAST<BrefcomPhysParams>(b->physicalParameters.get()));
+ CpmMat* bpp(YADE_PTR_CAST<CpmMat>(b->physicalParameters.get()));
bpp->epsVolumeric*=3/bpp->numContacts;
}
#endif
@@ -62,11 +60,11 @@
}
-/********************** BrefcomMakeContact ****************************/
-CREATE_LOGGER(BrefcomMakeContact);
+/********************** Ip2_CpmMat_CpmMat_CpmPhys ****************************/
+CREATE_LOGGER(Ip2_CpmMat_CpmMat_CpmPhys);
-void BrefcomMakeContact::go(const shared_ptr<PhysicalParameters>& pp1, const shared_ptr<PhysicalParameters>& pp2, const shared_ptr<Interaction>& interaction){
+void Ip2_CpmMat_CpmMat_CpmPhys::go(const shared_ptr<PhysicalParameters>& pp1, const shared_ptr<PhysicalParameters>& pp2, const shared_ptr<Interaction>& interaction){
Dem3DofGeom* contGeom=YADE_CAST<Dem3DofGeom*>(interaction->interactionGeometry.get());
assert(contGeom); // for now, don't handle anything other than SpheresContactGeometry and Dem3DofGeom
@@ -87,7 +85,7 @@
if(!neverDamage) { assert(!isnan(sigmaT)); }
- shared_ptr<BrefcomContact> contPhys(new BrefcomContact());
+ shared_ptr<CpmPhys> contPhys(new CpmPhys());
contPhys->E=E12;
contPhys->G=E12*G_over_E;
@@ -117,17 +115,17 @@
-/********************** BrefcomContact ****************************/
-CREATE_LOGGER(BrefcomContact);
+/********************** CpmPhys ****************************/
+CREATE_LOGGER(CpmPhys);
// !! at least one virtual function in the .cpp file
-BrefcomContact::~BrefcomContact(){};
+CpmPhys::~CpmPhys(){};
-CREATE_LOGGER(ef2_Spheres_Brefcom_BrefcomLaw);
+CREATE_LOGGER(Law2_Dem3DofGeom_CpmPhys_Cpm);
-long BrefcomContact::cummBetaIter=0, BrefcomContact::cummBetaCount=0;
+long CpmPhys::cummBetaIter=0, CpmPhys::cummBetaCount=0;
-Real BrefcomContact::solveBeta(const Real c, const Real N){
+Real CpmPhys::solveBeta(const Real c, const Real N){
#ifdef YADE_DEBUG
cummBetaCount++;
#endif
@@ -145,10 +143,10 @@
ret-=f/df;
}
LOG_FATAL("No convergence after "<<maxIter<<" iters; c="<<c<<", N="<<N<<", ret="<<ret<<", f="<<f);
- throw runtime_error("ef2_Spheres_Brefcom_BrefcomLaw::solveBeta failed to converge.");
+ throw runtime_error("Law2_Dem3DofGeom_CpmPhys_Cpm::solveBeta failed to converge.");
}
-Real BrefcomContact::computeDmgOverstress(Real dt){
+Real CpmPhys::computeDmgOverstress(Real dt){
if(dmgStrain>=epsN*omega){ // unloading, no viscous stress
dmgStrain=epsN*omega;
LOG_TRACE("Elastic/unloading, no viscous overstress");
@@ -163,7 +161,7 @@
return (epsN*omega-dmgStrain)*E;
}
-Real BrefcomContact::computeViscoplScalingFactor(Real sigmaTNorm, Real sigmaTYield,Real dt){
+Real CpmPhys::computeViscoplScalingFactor(Real sigmaTNorm, Real sigmaTYield,Real dt){
if(sigmaTNorm<sigmaTYield) return 1.;
Real c=undamagedCohesion*pow(plTau/(G*dt),plRateExp)*pow(sigmaTNorm-sigmaTYield,plRateExp-1.);
Real beta=solveBeta(c,plRateExp);
@@ -171,16 +169,16 @@
return 1.-exp(beta)*(1-sigmaTYield/sigmaTNorm);
}
-Real ef2_Spheres_Brefcom_BrefcomLaw::minStrain_moveBody2=1.; /* deactivated if > 0 */
-Real ef2_Spheres_Brefcom_BrefcomLaw::yieldLogSpeed=1.;
-Real ef2_Spheres_Brefcom_BrefcomLaw::yieldEllipseShift=0.;
+Real Law2_Dem3DofGeom_CpmPhys_Cpm::minStrain_moveBody2=1.; /* deactivated if > 0 */
+Real Law2_Dem3DofGeom_CpmPhys_Cpm::yieldLogSpeed=1.;
+Real Law2_Dem3DofGeom_CpmPhys_Cpm::yieldEllipseShift=0.;
-void ef2_Spheres_Brefcom_BrefcomLaw::go(shared_ptr<InteractionGeometry>& _geom, shared_ptr<InteractionPhysics>& _phys, Interaction* I, MetaBody* rootBody){
+void Law2_Dem3DofGeom_CpmPhys_Cpm::go(shared_ptr<InteractionGeometry>& _geom, shared_ptr<InteractionPhysics>& _phys, Interaction* I, MetaBody* rootBody){
//timingDeltas->start();
Dem3DofGeom* contGeom=static_cast<Dem3DofGeom*>(_geom.get());
- BrefcomContact* BC=static_cast<BrefcomContact*>(_phys.get());
+ CpmPhys* BC=static_cast<CpmPhys*>(_phys.get());
- /* kept fully damaged contacts; note that normally the contact is deleted _after_ the BREFCOM_MATERIAL_MODEL,
+ /* kept fully damaged contacts; note that normally the contact is deleted _after_ the CPM_MATERIAL_MODEL,
* i.e. if it is 1.0 here, omegaThreshold is >= 1.0 for sure.
* &&'ing that just to make sure anyway ...
*/
@@ -190,8 +188,8 @@
Real& epsN(BC->epsN); Vector3r& epsT(BC->epsT); Real& kappaD(BC->kappaD); Real& epsPlSum(BC->epsPlSum); const Real& E(BC->E); const Real& undamagedCohesion(BC->undamagedCohesion); const Real& tanFrictionAngle(BC->tanFrictionAngle); const Real& G(BC->G); const Real& crossSection(BC->crossSection); const Real& omegaThreshold(BC->omegaThreshold); const Real& epsCrackOnset(BC->epsCrackOnset); Real& relResidualStrength(BC->relResidualStrength); const Real& dt=Omega::instance().getTimeStep(); const Real& epsFracture(BC->epsFracture); const bool& neverDamage(BC->neverDamage); const Real& dmgTau(BC->dmgTau); const Real& plTau(BC->plTau); const bool& isCohesive(BC->isCohesive);
/* const Real& transStrainCoeff(BC->transStrainCoeff); const Real& epsTrans(BC->epsTrans); const Real& xiShear(BC->xiShear); */
Real& omega(BC->omega); Real& sigmaN(BC->sigmaN); Vector3r& sigmaT(BC->sigmaT); Real& Fn(BC->Fn); Vector3r& Fs(BC->Fs); // for python access
- const Real& yieldLogSpeed(ef2_Spheres_Brefcom_BrefcomLaw::yieldLogSpeed); const int& yieldSurfType(ef2_Spheres_Brefcom_BrefcomLaw::yieldSurfType);
- const Real& yieldEllipseShift(ef2_Spheres_Brefcom_BrefcomLaw::yieldEllipseShift);
+ const Real& yieldLogSpeed(Law2_Dem3DofGeom_CpmPhys_Cpm::yieldLogSpeed); const int& yieldSurfType(Law2_Dem3DofGeom_CpmPhys_Cpm::yieldSurfType);
+ const Real& yieldEllipseShift(Law2_Dem3DofGeom_CpmPhys_Cpm::yieldEllipseShift);
#define YADE_VERIFY(condition) if(!(condition)){LOG_FATAL("Verification `"<<#condition<<"' failed!"); throw;}
@@ -201,11 +199,13 @@
//timingDeltas->checkpoint("setup");
// if(contGeom->refR1<0) contGeom->refLength=contGeom->refR2; // make facet-sphere contact always at equilibrium when touching exactly (and not the initial distance)
epsN=contGeom->strainN(); epsT=contGeom->strainT();
- if(isnan(epsN)){
- LOG_FATAL("refLength="<<contGeom->refLength<<"; pos1="<<contGeom->se31.position<<"; pos2="<<contGeom->se32.position<<"; displacementN="<<contGeom->displacementN());
- throw runtime_error("!! epsN==NaN !!");
- }
- NNAN(epsN); NNANV(epsT);
+ #ifdef YADE_DEBUG
+ if(isnan(epsN)){
+ LOG_FATAL("refLength="<<contGeom->refLength<<"; pos1="<<contGeom->se31.position<<"; pos2="<<contGeom->se32.position<<"; displacementN="<<contGeom->displacementN());
+ throw runtime_error("!! epsN==NaN !!");
+ }
+ NNAN(epsN); NNANV(epsT);
+ #endif
// already in SpheresContactGeometry:
// contGeom->relocateContactPoints(); // allow very large mutual rotations
if(logStrain && epsN<0){
@@ -217,17 +217,17 @@
epsN+=BC->isoPrestress/E;
//TRVAR1(epsN);
- #ifdef BREFCOM_MATERIAL_MODEL
- BREFCOM_MATERIAL_MODEL
+ #ifdef CPM_MATERIAL_MODEL
+ CPM_MATERIAL_MODEL
#else
sigmaN=E*epsN;
sigmaT=G*epsT;
#endif
sigmaN-=BC->isoPrestress;
- if(contGeom->refR1<0 && ef2_Spheres_Brefcom_BrefcomLaw::minStrain_moveBody2<=0 && epsN<ef2_Spheres_Brefcom_BrefcomLaw::minStrain_moveBody2){
+ if(contGeom->refR1<0 && Law2_Dem3DofGeom_CpmPhys_Cpm::minStrain_moveBody2<=0 && epsN<Law2_Dem3DofGeom_CpmPhys_Cpm::minStrain_moveBody2){
/* move Body2 (the sphere) so that minStrain is satisfied */
- rootBody->bex.addMove(I->getId2(),contGeom->normal*(ef2_Spheres_Brefcom_BrefcomLaw::minStrain_moveBody2-epsN)*contGeom->refLength);
- LOG_TRACE("Moving by "<<contGeom->normal*(ef2_Spheres_Brefcom_BrefcomLaw::minStrain_moveBody2-epsN)*contGeom->refLength);
+ rootBody->bex.addMove(I->getId2(),contGeom->normal*(Law2_Dem3DofGeom_CpmPhys_Cpm::minStrain_moveBody2-epsN)*contGeom->refLength);
+ LOG_TRACE("Moving by "<<contGeom->normal*(Law2_Dem3DofGeom_CpmPhys_Cpm::minStrain_moveBody2-epsN)*contGeom->refLength);
}
NNAN(kappaD); NNAN(epsCrackOnset); NNAN(epsFracture); NNAN(omega);
NNAN(sigmaN); NNANV(sigmaT); NNAN(crossSection);
@@ -240,7 +240,7 @@
rootBody->interactions->requestErase(I->getId1(),I->getId2());
if(isCohesive){
const shared_ptr<Body>& body1=Body::byId(I->getId1(),rootBody), body2=Body::byId(I->getId2(),rootBody); assert(body1); assert(body2);
- const shared_ptr<BrefcomPhysParams>& rbp1=YADE_PTR_CAST<BrefcomPhysParams>(body1->physicalParameters), rbp2=YADE_PTR_CAST<BrefcomPhysParams>(body2->physicalParameters);
+ const shared_ptr<CpmMat>& rbp1=YADE_PTR_CAST<CpmMat>(body1->physicalParameters), rbp2=YADE_PTR_CAST<CpmMat>(body2->physicalParameters);
if(BC->isCohesive){rbp1->numBrokenCohesive+=1; rbp2->numBrokenCohesive+=1; rbp1->epsPlBroken+=epsPlSum; rbp2->epsPlBroken+=epsPlSum;}
LOG_DEBUG("Contact #"<<I->getId1()<<"=#"<<I->getId2()<<" is damaged over thershold ("<<omega<<">"<<omegaThreshold<<") and will be deleted.");
}
@@ -255,24 +255,24 @@
}
-/********************** GLDrawBrefcomContact ****************************/
+/********************** GLDrawCpmPhys ****************************/
#include<yade/lib-opengl/OpenGLWrapper.hpp>
-CREATE_LOGGER(GLDrawBrefcomContact);
+CREATE_LOGGER(GLDrawCpmPhys);
-bool GLDrawBrefcomContact::contactLine=true;
-bool GLDrawBrefcomContact::dmgLabel=true;
-bool GLDrawBrefcomContact::dmgPlane=false;
-bool GLDrawBrefcomContact::epsNLabel=true;
-bool GLDrawBrefcomContact::epsT=false;
-bool GLDrawBrefcomContact::epsTAxes=false;
-bool GLDrawBrefcomContact::normal=false;
-bool GLDrawBrefcomContact::colorStrain=false;
+bool GLDrawCpmPhys::contactLine=true;
+bool GLDrawCpmPhys::dmgLabel=true;
+bool GLDrawCpmPhys::dmgPlane=false;
+bool GLDrawCpmPhys::epsNLabel=true;
+bool GLDrawCpmPhys::epsT=false;
+bool GLDrawCpmPhys::epsTAxes=false;
+bool GLDrawCpmPhys::normal=false;
+bool GLDrawCpmPhys::colorStrain=false;
-void GLDrawBrefcomContact::go(const shared_ptr<InteractionPhysics>& ip, const shared_ptr<Interaction>& i, const shared_ptr<Body>& b1, const shared_ptr<Body>& b2, bool wireFrame){
- const shared_ptr<BrefcomContact>& BC=static_pointer_cast<BrefcomContact>(ip);
+void GLDrawCpmPhys::go(const shared_ptr<InteractionPhysics>& ip, const shared_ptr<Interaction>& i, const shared_ptr<Body>& b1, const shared_ptr<Body>& b2, bool wireFrame){
+ const shared_ptr<CpmPhys>& BC=static_pointer_cast<CpmPhys>(ip);
const shared_ptr<Dem3DofGeom>& geom=YADE_PTR_CAST<Dem3DofGeom>(i->interactionGeometry);
//Vector3r lineColor(BC->omega,1-BC->omega,0.0); /* damaged links red, undamaged green */
@@ -328,14 +328,14 @@
struct BodyStats{ short nCohLinks; Real dmgSum; Real epsPlSum; BodyStats(): nCohLinks(0), dmgSum(0), epsPlSum(0.){} };
-/********************** BrefcomDamageColorizer ****************************/
-void BrefcomDamageColorizer::action(MetaBody* rootBody){
+/********************** CpmPhysDamageColorizer ****************************/
+void CpmPhysDamageColorizer::action(MetaBody* rootBody){
//vector<pair<short,Real> > bodyDamage; /* number of cohesive interactions per body; cummulative damage of interactions */
//vector<pair<short,
vector<BodyStats> bodyStats; bodyStats.resize(rootBody->bodies->size());
assert(bodyStats[0].nCohLinks==0); // should be initialized by dfault ctor
FOREACH(const shared_ptr<Interaction>& I, *rootBody->interactions){
- shared_ptr<BrefcomContact> BC=dynamic_pointer_cast<BrefcomContact>(I->interactionPhysics);
+ shared_ptr<CpmPhys> BC=dynamic_pointer_cast<CpmPhys>(I->interactionPhysics);
if(!BC || !BC->isCohesive) continue;
const body_id_t id1=I->getId1(), id2=I->getId2();
bodyStats[id1].nCohLinks++; bodyStats[id1].dmgSum+=(1-BC->relResidualStrength); bodyStats[id1].epsPlSum+=BC->epsPlSum;
@@ -347,7 +347,7 @@
FOREACH(shared_ptr<Body> B, *rootBody->bodies){
body_id_t id=B->getId();
// add damaged contacts that have already been deleted
- BrefcomPhysParams* bpp=dynamic_cast<BrefcomPhysParams*>(B->physicalParameters.get());
+ CpmMat* bpp=dynamic_cast<CpmMat*>(B->physicalParameters.get());
if(!bpp) continue;
short cohLinksWhenever=bodyStats[id].nCohLinks+bpp->numBrokenCohesive;
if(cohLinksWhenever>0){
Modified: trunk/extra/Brefcom.hpp
===================================================================
--- trunk/extra/Brefcom.hpp 2009-05-24 10:34:22 UTC (rev 1776)
+++ trunk/extra/Brefcom.hpp 2009-05-24 10:53:29 UTC (rev 1777)
@@ -21,29 +21,29 @@
*
* May be extended in the future to compute global stiffness etc as well.
*/
-class BrefcomGlobalCharacteristics: public PeriodicEngine{
+class CpmGlobalCharacteristics: public PeriodicEngine{
public:
bool useMaxForce; // use maximum unbalanced force instead of mean unbalanced force
Real unbalancedForce;
void compute(MetaBody* rb, bool useMax=false);
virtual void action(MetaBody* rb){compute(rb,useMaxForce);}
- BrefcomGlobalCharacteristics(){};
+ CpmGlobalCharacteristics(){};
REGISTER_ATTRIBUTES(PeriodicEngine,
(unbalancedForce)
(useMaxForce)
);
DECLARE_LOGGER;
- REGISTER_CLASS_AND_BASE(BrefcomGlobalCharacteristics,PeriodicEngine);
+ REGISTER_CLASS_AND_BASE(CpmGlobalCharacteristics,PeriodicEngine);
};
-REGISTER_SERIALIZABLE(BrefcomGlobalCharacteristics);
+REGISTER_SERIALIZABLE(CpmGlobalCharacteristics);
-/*! @brief representation of a single interaction of the brefcom type: storage for relevant parameters.
+/*! @brief representation of a single interaction of the CPM type: storage for relevant parameters.
*
- * Evolution of the contact is governed by BrefcomLaw:
- * that includes damage effects and chages of parameters inside BrefcomContact.
+ * Evolution of the contact is governed by Law2_Dem3DofGeom_CpmPhys_Cpm:
+ * that includes damage effects and chages of parameters inside CpmPhys.
*
*/
-class BrefcomContact: public NormalShearInteraction {
+class CpmPhys: public NormalShearInteraction {
private:
public:
/*! Fundamental parameters (constants) */
@@ -95,7 +95,7 @@
//! debugging, to see convergence rate
static long cummBetaIter, cummBetaCount;
- /*! auxiliary variable for visualization, recalculated in BrefcomLaw at every iteration */
+ /*! auxiliary variable for visualization, recalculated in Law2_Dem3DofGeom_CpmPhys_Cpm at every iteration */
// FIXME: Fn and Fs are stored as Vector3r normalForce, shearForce in NormalShearInteraction
Real omega, Fn, sigmaN, epsN, relResidualStrength; Vector3r epsT, sigmaT, Fs;
@@ -106,8 +106,8 @@
- BrefcomContact(): NormalShearInteraction(),E(0), G(0), tanFrictionAngle(0), undamagedCohesion(0), crossSection(0), xiShear(0), dmgTau(-1), dmgRateExp(0), dmgStrain(0), plTau(-1), plRateExp(0), isoPrestress(0.), kappaD(0.), epsTrans(0.), epsPlSum(0.) { createIndex(); epsT=Vector3r::ZERO; isCohesive=false; neverDamage=false; omega=0; Fn=0; Fs=Vector3r::ZERO; epsPlSum=0; dmgOverstress=0; }
- virtual ~BrefcomContact();
+ CpmPhys(): NormalShearInteraction(),E(0), G(0), tanFrictionAngle(0), undamagedCohesion(0), crossSection(0), xiShear(0), dmgTau(-1), dmgRateExp(0), dmgStrain(0), plTau(-1), plRateExp(0), isoPrestress(0.), kappaD(0.), epsTrans(0.), epsPlSum(0.) { createIndex(); epsT=Vector3r::ZERO; isCohesive=false; neverDamage=false; omega=0; Fn=0; Fs=Vector3r::ZERO; epsPlSum=0; dmgOverstress=0; }
+ virtual ~CpmPhys();
REGISTER_ATTRIBUTES(NormalShearInteraction,
(E)
@@ -147,13 +147,13 @@
(sigmaT)
(relResidualStrength)
);
- REGISTER_CLASS_AND_BASE(BrefcomContact,NormalShearInteraction);
+ REGISTER_CLASS_AND_BASE(CpmPhys,NormalShearInteraction);
DECLARE_LOGGER;
};
-REGISTER_SERIALIZABLE(BrefcomContact);
+REGISTER_SERIALIZABLE(CpmPhys);
/* This class holds information associated with each body */
-class BrefcomPhysParams: public BodyMacroParameters {
+class CpmMat: public BodyMacroParameters {
public:
//! volumetric strain around this body
Real epsVolumetric;
@@ -167,13 +167,13 @@
Real epsPlBroken;
//! sum of plastic strains normalized by number of contacts
Real normEpsPl;
- BrefcomPhysParams(): epsVolumetric(0.), numBrokenCohesive(0), numContacts(0), normDmg(0.), epsPlBroken(0.), normEpsPl(0.) {createIndex();};
+ CpmMat(): epsVolumetric(0.), numBrokenCohesive(0), numContacts(0), normDmg(0.), epsPlBroken(0.), normEpsPl(0.) {createIndex();};
REGISTER_ATTRIBUTES(BodyMacroParameters, (epsVolumetric) (numBrokenCohesive) (numContacts) (normDmg) (epsPlBroken) (normEpsPl));
- REGISTER_CLASS_AND_BASE(BrefcomPhysParams,BodyMacroParameters);
+ REGISTER_CLASS_AND_BASE(CpmMat,BodyMacroParameters);
};
-REGISTER_SERIALIZABLE(BrefcomPhysParams);
+REGISTER_SERIALIZABLE(CpmMat);
-class ef2_Spheres_Brefcom_BrefcomLaw: public ConstitutiveLaw{
+class Law2_Dem3DofGeom_CpmPhys_Cpm: public ConstitutiveLaw{
public:
/*! Damage evolution law */
static Real funcG(const Real& kappaD, const Real& epsCrackOnset, const Real& epsFracture, const bool& neverDamage) {
@@ -188,43 +188,19 @@
static Real yieldEllipseShift;
//! HACK: limit strain on some contacts by moving body #2 in the contact; only if refR1<0 (facet); deactivated if > 0
static Real minStrain_moveBody2;
- ef2_Spheres_Brefcom_BrefcomLaw(): logStrain(false), yieldSurfType(0) { /*timingDeltas=shared_ptr<TimingDeltas>(new TimingDeltas);*/ }
+ Law2_Dem3DofGeom_CpmPhys_Cpm(): logStrain(false), yieldSurfType(0) { /*timingDeltas=shared_ptr<TimingDeltas>(new TimingDeltas);*/ }
void go(shared_ptr<InteractionGeometry>& _geom, shared_ptr<InteractionPhysics>& _phys, Interaction* I, MetaBody* rootBody);
- FUNCTOR2D(Dem3DofGeom,BrefcomContact);
- REGISTER_CLASS_AND_BASE(ef2_Spheres_Brefcom_BrefcomLaw,ConstitutiveLaw);
+ FUNCTOR2D(Dem3DofGeom,CpmPhys);
+ REGISTER_CLASS_AND_BASE(Law2_Dem3DofGeom_CpmPhys_Cpm,ConstitutiveLaw);
REGISTER_ATTRIBUTES(ConstitutiveLaw,(logStrain)(yieldSurfType)(yieldLogSpeed)(yieldEllipseShift)(minStrain_moveBody2));
DECLARE_LOGGER;
};
-REGISTER_SERIALIZABLE(ef2_Spheres_Brefcom_BrefcomLaw);
+REGISTER_SERIALIZABLE(Law2_Dem3DofGeom_CpmPhys_Cpm);
-// obsolete
-#if 0
-class BrefcomLaw: public InteractionSolver{
- private:
- shared_ptr<ef2_Spheres_Brefcom_BrefcomLaw> functor;
- shared_ptr<BrefcomContact> BC;
- shared_ptr<SpheresContactGeometry> contGeom;
- MetaBody* rootBody;
- //! aplly calculated force on both particles (applied in the inverse sense on B)
- void applyForce(const Vector3r&, const body_id_t&, const body_id_t&);
- /*! Damage evolution law */
- Real funcG(const Real& kappaD, const Real& epsCrackOnset, const Real& epsFracture, const bool& neverDamage) const{ return ef2_Spheres_Brefcom_BrefcomLaw::funcG(kappaD,epsCrackOnset,epsFracture,neverDamage); }
-
- public:
- bool logStrain;
- BrefcomLaw(): logStrain(false) { };
- void action(MetaBody*);
- protected:
- REGISTER_CLASS_AND_BASE(BrefcomLaw,InteractionSolver);
- REGISTER_ATTRIBUTES(InteractionSolver,(logStrain));
- DECLARE_LOGGER;
-};
-REGISTER_SERIALIZABLE(BrefcomLaw);
-#endif
-/*! @brief Convert macroscopic properties to BrefcomContact with corresponding parameters.
+/*! @brief Convert macroscopic properties to CpmPhys with corresponding parameters.
*
* */
-class BrefcomMakeContact: public InteractionPhysicsEngineUnit{
+class Ip2_CpmMat_CpmMat_CpmPhys: public InteractionPhysicsEngineUnit{
private:
public:
/* nonelastic material parameters */
@@ -237,10 +213,10 @@
Real sigmaT, epsCrackOnset, relDuctility, G_over_E, tau, expDmgRate, omegaThreshold, dmgTau, dmgRateExp, plTau, plRateExp, isoPrestress;
//! Should new contacts be cohesive? They will before this iter#, they will not be afterwards. If 0, they will never be. If negative, they will always be created as cohesive.
long cohesiveThresholdIter;
- //! Create contacts that don't receive any damage (BrefcomContact::neverDamage=true); defaults to false
+ //! Create contacts that don't receive any damage (CpmPhys::neverDamage=true); defaults to false
bool neverDamage;
- BrefcomMakeContact(){
+ Ip2_CpmMat_CpmMat_CpmPhys(){
// init to signaling_NaN to force crash if not initialized (better than unknowingly using garbage values)
sigmaT=epsCrackOnset=relDuctility=G_over_E=std::numeric_limits<Real>::signaling_NaN();
neverDamage=false;
@@ -266,31 +242,31 @@
(isoPrestress)
);
- FUNCTOR2D(BrefcomPhysParams,BrefcomPhysParams);
- REGISTER_CLASS_AND_BASE(BrefcomMakeContact,InteractionPhysicsEngineUnit);
+ FUNCTOR2D(CpmMat,CpmMat);
+ REGISTER_CLASS_AND_BASE(Ip2_CpmMat_CpmMat_CpmPhys,InteractionPhysicsEngineUnit);
DECLARE_LOGGER;
};
-REGISTER_SERIALIZABLE(BrefcomMakeContact);
+REGISTER_SERIALIZABLE(Ip2_CpmMat_CpmMat_CpmPhys);
-class GLDrawBrefcomContact: public GLDrawInteractionPhysicsFunctor {
+class GLDrawCpmPhys: public GLDrawInteractionPhysicsFunctor {
public: virtual void go(const shared_ptr<InteractionPhysics>&,const shared_ptr<Interaction>&,const shared_ptr<Body>&,const shared_ptr<Body>&,bool wireFrame);
- virtual ~GLDrawBrefcomContact() {};
+ virtual ~GLDrawCpmPhys() {};
REGISTER_ATTRIBUTES(/*no base*/,(contactLine)(dmgLabel)(dmgPlane)(epsT)(epsTAxes)(normal)(colorStrain)(epsNLabel));
- RENDERS(BrefcomContact);
- REGISTER_CLASS_AND_BASE(GLDrawBrefcomContact,GLDrawInteractionPhysicsFunctor);
+ RENDERS(CpmPhys);
+ REGISTER_CLASS_AND_BASE(GLDrawCpmPhys,GLDrawInteractionPhysicsFunctor);
DECLARE_LOGGER;
static bool contactLine,dmgLabel,dmgPlane,epsT,epsTAxes,normal,colorStrain,epsNLabel;
};
-REGISTER_SERIALIZABLE(GLDrawBrefcomContact);
+REGISTER_SERIALIZABLE(GLDrawCpmPhys);
-class BrefcomDamageColorizer: public PeriodicEngine {
+class CpmPhysDamageColorizer: public PeriodicEngine {
public:
//! maximum damage over all contacts
Real maxOmega;
- BrefcomDamageColorizer(){maxOmega=0; /* run at the very beginning */ initRun=true;}
+ CpmPhysDamageColorizer(){maxOmega=0; /* run at the very beginning */ initRun=true;}
virtual void action(MetaBody*);
REGISTER_ATTRIBUTES(PeriodicEngine,(maxOmega));
- REGISTER_CLASS_AND_BASE(BrefcomDamageColorizer,PeriodicEngine);
+ REGISTER_CLASS_AND_BASE(CpmPhysDamageColorizer,PeriodicEngine);
};
-REGISTER_SERIALIZABLE(BrefcomDamageColorizer);
+REGISTER_SERIALIZABLE(CpmPhysDamageColorizer);
Modified: trunk/extra/BrefcomTestGen.cpp
===================================================================
--- trunk/extra/BrefcomTestGen.cpp 2009-05-24 10:34:22 UTC (rev 1776)
+++ trunk/extra/BrefcomTestGen.cpp 2009-05-24 10:53:29 UTC (rev 1777)
@@ -56,14 +56,14 @@
rootBody->engines.push_back(igeomDispatcher);
shared_ptr<InteractionPhysicsMetaEngine> iphysDispatcher(new InteractionPhysicsMetaEngine);
- shared_ptr<BrefcomMakeContact> bmc(new BrefcomMakeContact);
+ shared_ptr<Ip2_CpmMat_CpmMat_CpmPhys> bmc(new Ip2_CpmMat_CpmMat_CpmPhys);
bmc->cohesiveThresholdIter=-1; bmc->G_over_E=1; bmc->sigmaT=3e9; bmc->neverDamage=true; bmc->epsCrackOnset=1e-4; bmc->relDuctility=5;
//bmc->calibratedEpsFracture=.5; /* arbitrary, but large enough */
iphysDispatcher->add(bmc);
rootBody->engines.push_back(iphysDispatcher);
shared_ptr<ConstitutiveLawDispatcher> clDisp(new ConstitutiveLawDispatcher);
- clDisp->add(shared_ptr<ConstitutiveLaw>(new ef2_Spheres_Brefcom_BrefcomLaw));
+ clDisp->add(shared_ptr<ConstitutiveLaw>(new Law2_Dem3DofGeom_CpmPhys_Cpm));
rootBody->engines.push_back(clDisp);
shared_ptr<PhysicalActionApplier> applyActionDispatcher(new PhysicalActionApplier);
@@ -79,7 +79,7 @@
orientationIntegrator->add(new LeapFrogOrientationIntegrator);
rootBody->engines.push_back(orientationIntegrator);
- shared_ptr<BrefcomDamageColorizer> dmg(new BrefcomDamageColorizer);
+ shared_ptr<CpmPhysDamageColorizer> dmg(new CpmPhysDamageColorizer);
rootBody->engines.push_back(dmg);
#if 0
Modified: trunk/extra/usct/UniaxialStrainControlledTest.cpp
===================================================================
--- trunk/extra/usct/UniaxialStrainControlledTest.cpp 2009-05-24 10:34:22 UTC (rev 1776)
+++ trunk/extra/usct/UniaxialStrainControlledTest.cpp 2009-05-24 10:53:29 UTC (rev 1777)
@@ -198,9 +198,9 @@
Real r=I->second;
shared_ptr<Body> S=Shop::sphere(C,r);
- // replace BodyMacroParameters by BrefcomPhysParams
+ // replace BodyMacroParameters by CpmMat
shared_ptr<BodyMacroParameters> bmp=YADE_PTR_CAST<BodyMacroParameters>(S->physicalParameters);
- shared_ptr<BrefcomPhysParams> bpp(new BrefcomPhysParams);
+ shared_ptr<CpmMat> bpp(new CpmMat);
#define _CP(attr) bpp->attr=bmp->attr;
_CP(acceleration); _CP(angularVelocity); _CP(blockedDOFs); _CP(frictionAngle); _CP(inertia); _CP(mass); _CP(poisson); _CP(refSe3); _CP(se3); _CP(young); _CP(velocity);
#undef _CP
@@ -278,14 +278,14 @@
rootBody->engines.push_back(igeomDispatcher);
shared_ptr<InteractionPhysicsMetaEngine> iphysDispatcher(new InteractionPhysicsMetaEngine);
- shared_ptr<BrefcomMakeContact> bmc(new BrefcomMakeContact);
+ shared_ptr<Ip2_CpmMat_CpmMat_CpmPhys> bmc(new Ip2_CpmMat_CpmMat_CpmPhys);
bmc->cohesiveThresholdIter=cohesiveThresholdIter;
bmc->cohesiveThresholdIter=-1; bmc->G_over_E=1;bmc->sigmaT=3e9; bmc->neverDamage=true; bmc->epsCrackOnset=1e-4; bmc->relDuctility=5;
iphysDispatcher->add(bmc);
rootBody->engines.push_back(iphysDispatcher);
shared_ptr<ConstitutiveLawDispatcher> clDisp(new ConstitutiveLawDispatcher);
- clDisp->add(shared_ptr<ConstitutiveLaw>(new ef2_Spheres_Brefcom_BrefcomLaw));
+ clDisp->add(shared_ptr<ConstitutiveLaw>(new Law2_Dem3DofGeom_CpmPhys_Cpm));
rootBody->engines.push_back(clDisp);
@@ -313,7 +313,7 @@
orientationIntegrator->add(new LeapFrogOrientationIntegrator);
rootBody->engines.push_back(orientationIntegrator);
- rootBody->engines.push_back(shared_ptr<BrefcomDamageColorizer>(new BrefcomDamageColorizer));
+ rootBody->engines.push_back(shared_ptr<CpmPhysDamageColorizer>(new CpmPhysDamageColorizer));
}
Modified: trunk/gui/py/PythonUI_rc.py
===================================================================
--- trunk/gui/py/PythonUI_rc.py 2009-05-24 10:34:22 UTC (rev 1776)
+++ trunk/gui/py/PythonUI_rc.py 2009-05-24 10:53:29 UTC (rev 1777)
@@ -40,13 +40,22 @@
### end wrappers
#### HANDLE RENAMED CLASSES ####
-renamed={'ef2_Spheres_Brefcom_BrefcomLaw':'ef2_Dem3Dof_Cpm_Cpm'}
+renamed={
+ 'BrefcomMakeContact':'Ip2_CpmMat_CpmMat_CpmPhys',
+ 'BrefcomContact':'CpmPhys',
+ 'BrefcomPhysParams':'CpmMat',
+ 'ef2_Spheres_Brefcom_BrefcomLaw':'Law2_Dem3DofGeom_CpmPhys_Cpm',
+ 'GLDrawBrefcomContact':'GLDrawCpmPhys',
+ 'BrefcomDamageColorizer':'CpmPhysDamageColorizer',
+ 'BrefcomGlobalCharacteristics':'CpmGlobalCharacteristics'
+}
+
for oldName in renamed:
class warnWrap:
def __init__(self,_old,_new): self.old,self.new=_old,_new
- def __call__(self,*args):
+ def __call__(self,*args,**kw):
import warnings; warnings.warn("Class `%s' was renamed to `%s', update your code!"%(self.old,self.new),DeprecationWarning,stacklevel=2);
- return _dd[self.new](*args)
+ return _dd[self.new](*args,**kw)
_dd[oldName]=warnWrap(oldName,renamed[oldName])
Modified: trunk/gui/py/_eudoxos.cpp
===================================================================
--- trunk/gui/py/_eudoxos.cpp 2009-05-24 10:34:22 UTC (rev 1776)
+++ trunk/gui/py/_eudoxos.cpp 2009-05-24 10:53:29 UTC (rev 1777)
@@ -14,7 +14,7 @@
Real E=0;
FOREACH(const shared_ptr<Interaction>&i, *rb->transientInteractions){
if(!i->interactionPhysics) continue;
- shared_ptr<BrefcomContact> bc=dynamic_pointer_cast<BrefcomContact>(i->interactionPhysics); if(!bc) continue;
+ shared_ptr<CpmPhys> bc=dynamic_pointer_cast<CpmPhys>(i->interactionPhysics); if(!bc) continue;
const shared_ptr<Body>& b1=Body::byId(i->getId1(),rb), b2=Body::byId(i->getId2(),rb);
bool isIn1=isInBB(b1->physicalParameters->se3.position,bbMin,bbMax), isIn2=isInBB(b2->physicalParameters->se3.position,bbMin,bbMax);
if(!isIn1 && !isIn2) continue;
@@ -32,9 +32,9 @@
}
#endif
-/* yield surface for the brefcom concrete model; this is used only to make yield surface plot from python, for debugging */
+/* yield surface for the CPM model; this is used only to make yield surface plot from python, for debugging */
Real yieldSigmaTMagnitude(Real sigmaN, int yieldSurfType=0){
- #ifdef BREFCOM_YIELD_SIGMA_T_MAGNITUDE
+ #ifdef CPM_YIELD_SIGMA_T_MAGNITUDE
/* find first suitable interaction */
MetaBody* rootBody=Omega::instance().getRootBody().get();
shared_ptr<Interaction> I;
@@ -43,14 +43,14 @@
}
Real nan=std::numeric_limits<Real>::quiet_NaN();
if(!I->isReal) {LOG_ERROR("No real interaction found, returning NaN!"); return nan; }
- BrefcomContact* BC=dynamic_cast<BrefcomContact*>(I->interactionPhysics.get());
- if(!BC) {LOG_ERROR("Interaction physics is not BrefcomContact instance, returning NaN!"); return nan;}
+ CpmPhys* BC=dynamic_cast<CpmPhys*>(I->interactionPhysics.get());
+ if(!BC) {LOG_ERROR("Interaction physics is not CpmPhys instance, returning NaN!"); return nan;}
const Real &omega(BC->omega); const Real& undamagedCohesion(BC->undamagedCohesion); const Real& tanFrictionAngle(BC->tanFrictionAngle);
- const Real& yieldLogSpeed(ef2_Spheres_Brefcom_BrefcomLaw::yieldLogSpeed); // const int& yieldSurfType(ef2_Spheres_Brefcom_BrefcomLaw::yieldSurfType);
- const Real& yieldEllipseShift(ef2_Spheres_Brefcom_BrefcomLaw::yieldEllipseShift);
- return BREFCOM_YIELD_SIGMA_T_MAGNITUDE(sigmaN);
+ const Real& yieldLogSpeed(Law2_Dem3DofGeom_CpmPhys_Cpm::yieldLogSpeed); // const int& yieldSurfType(Law2_Dem3DofGeom_CpmPhys_Cpm::yieldSurfType);
+ const Real& yieldEllipseShift(Law2_Dem3DofGeom_CpmPhys_Cpm::yieldEllipseShift);
+ return CPM_YIELD_SIGMA_T_MAGNITUDE(sigmaN);
#else
- LOG_FATAL("Brefcom model not available in this build.");
+ LOG_FATAL("CPM model not available in this build.");
throw;
#endif
}