yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #03790
Re: [Branch ~yade-dev/yade/trunk] Rev 2123: -updates for capillary files (doc in Law2_..._Capillarity and changes in CapillaryStressRecorder)...
SORRY for this!!
I did not check if rev2122 compiled before updating (I should) and commiting
my updates, and it seems that there is an error due to formating in
TriaxialStressController which prevent from compiling this new version.
Luc
2010/4/1 <noreply@xxxxxxxxxxxxx>
> ------------------------------------------------------------
> revno: 2123
> committer: Luc Scholtes <sch50p@fluent-ph>
> branch nick: trunk
> timestamp: Thu 2010-04-01 16:17:19 +1000
> message:
> -updates for capillary files (doc in Law2_..._Capillarity and changes in
> CapillaryStressRecorder)\n\n -add a feature to CohesiveFrictionalPM
> (creation of CFpmState to stock number of broken bonds)
> modified:
> pkg/dem/Engine/GlobalEngine/CohesiveFrictionalPM.cpp
> pkg/dem/Engine/GlobalEngine/CohesiveFrictionalPM.hpp
> pkg/dem/Engine/GlobalEngine/Law2_ScGeom_CapillaryPhys_Capillarity.hpp
> pkg/dem/Engine/PartialEngine/CapillaryStressRecorder.cpp
>
>
> --
> lp:yade
> https://code.launchpad.net/~yade-dev/yade/trunk<https://code.launchpad.net/%7Eyade-dev/yade/trunk>
>
> Your team Yade developers is subscribed to branch lp:yade.
> To unsubscribe from this branch go to
> https://code.launchpad.net/~yade-dev/yade/trunk/+edit-subscription<https://code.launchpad.net/%7Eyade-dev/yade/trunk/+edit-subscription>
>
> === modified file 'pkg/dem/Engine/GlobalEngine/CohesiveFrictionalPM.cpp'
> --- pkg/dem/Engine/GlobalEngine/CohesiveFrictionalPM.cpp 2010-03-12
> 07:16:16 +0000
> +++ pkg/dem/Engine/GlobalEngine/CohesiveFrictionalPM.cpp 2010-04-01
> 06:17:19 +0000
> @@ -5,7 +5,7 @@
> #include<yade/pkg-dem/ScGeom.hpp>
> #include<yade/core/Omega.hpp>
>
>
> -YADE_PLUGIN((Law2_ScGeom_CFpmPhys_CohesiveFrictionalPM)(Ip2_CFpmMat_CFpmMat_CFpmPhys)(CFpmPhys)(CFpmMat));
>
> +YADE_PLUGIN((CFpmMat)(CFpmState)(CFpmPhys)(Ip2_CFpmMat_CFpmMat_CFpmPhys)(Law2_ScGeom_CFpmPhys_CohesiveFrictionalPM));
>
> /********************** Law2_ScGeom_CFpmPhys_CohesiveFrictionalPM
> ****************************/
> CREATE_LOGGER(Law2_ScGeom_CFpmPhys_CohesiveFrictionalPM);
> @@ -35,6 +35,22 @@
> if (!phys->isCohesive){
> rootBody->interactions->requestErase(contact->getId1(),contact->getId2());
> return; } // destroy the interaction before calculation
> if ((phys->isCohesive) && (abs(D) > (Dtensile + Dsoftening))) { //
> spheres are bonded and the interacting distance is greater than the one
> allowed ny the defined cohesion
> phys->isCohesive=false;
> + /// update body state with the number of broken bonds
> + // as in ConcretePM but needs CpmStateUpdater
> +// const shared_ptr<Body>&
> body1=Body::byId(contact->getId1(),scene),
> body2=Body::byId(contact->getId2(),scene); assert(body1); assert(body2);
> +// const shared_ptr<CFpmState>&
> st1=YADE_PTR_CAST<CFpmState>(body1->state),
> st2=YADE_PTR_CAST<CFpmState>(body2->state);
> +// { boost::mutex::scoped_lock lock(st1->updateMutex);
> st1->numBrokenCohesive+=1;}
> +// { boost::mutex::scoped_lock lock(st2->updateMutex);
> st2->numBrokenCohesive+=1;}
> + // luc test
> + CFpmState* st1=dynamic_cast<CFpmState*>(b1->state.get());
> + CFpmState* st2=dynamic_cast<CFpmState*>(b2->state.get());
> + //// autre solution
> +// State* st1 = Body::byId(id1,rootBody)->state.get();
> +// State* st2 = Body::byId(id2,rootBody)->state.get();
> + st1->numBrokenCohesive+=1;
> + st2->numBrokenCohesive+=1;
> +
> + /// end of update
>
> rootBody->interactions->requestErase(contact->getId1(),contact->getId2());
> return;
> }
> }
>
> === modified file 'pkg/dem/Engine/GlobalEngine/CohesiveFrictionalPM.hpp'
> --- pkg/dem/Engine/GlobalEngine/CohesiveFrictionalPM.hpp 2010-03-09
> 23:55:21 +0000
> +++ pkg/dem/Engine/GlobalEngine/CohesiveFrictionalPM.hpp 2010-04-01
> 06:17:19 +0000
> @@ -25,8 +25,20 @@
> - It has not been tested for sphere/facet or sphere/wall
> interactions and could be updated to be used by DemXDofGeom
> */
>
> +/** This class holds information associated with each body state*/
> +class CFpmState: public State {
> + YADE_CLASS_BASE_DOC_ATTRS(CFpmState,State,"CFpm state information
> about each body.\n\nNone of that is used for computation (at least not now),
> only for post-processing.",
> + ((int,numBrokenCohesive,0,"Number of (cohesive) contacts
> that damaged completely"))
> + );
> +};
> +REGISTER_SERIALIZABLE(CFpmState);
> +
> /** This class holds information associated with each body */
> class CFpmMat: public FrictMat {
> + public:
> + virtual shared_ptr<State> newAssocState() const { return
> shared_ptr<State>(new CFpmState); }
> + virtual bool stateTypeOk(State* s) const { return
> (bool)dynamic_cast<CFpmState*>(s); }
> +
> YADE_CLASS_BASE_DOC_ATTRS_CTOR(CFpmMat,FrictMat,"cohesive frictional
> material, for use with other CFpm classes",
> ((int,type,0,"Type of the particle. If particles of two different
> types interact, it will be with friction only (no cohesion).[-]")),
> createIndex();
> @@ -54,8 +66,8 @@
> ((Vector3r,prevNormal,Vector3r::ZERO,"Normal to the
> contact at previous time step."))
> ((Vector3r,moment_twist,Vector3r::ZERO," [N.m]"))
> ((Vector3r,moment_bending,Vector3r::ZERO," [N.m]"))
> -
> ((Quaternionr,initialOrientation1,Quaternionr(1.0,0.0,0.0,0.0),"Use for
> moment computation."))
> -
> ((Quaternionr,initialOrientation2,Quaternionr(1.0,0.0,0.0,0.0),"Use for
> moment computation."))
> +
> ((Quaternionr,initialOrientation1,Quaternionr(1.0,0.0,0.0,0.0),"Used for
> moment computation."))
> +
> ((Quaternionr,initialOrientation2,Quaternionr(1.0,0.0,0.0,0.0),"Used for
> moment computation."))
> ,
> createIndex();
> ,
>
> === modified file
> 'pkg/dem/Engine/GlobalEngine/Law2_ScGeom_CapillaryPhys_Capillarity.hpp'
> --- pkg/dem/Engine/GlobalEngine/Law2_ScGeom_CapillaryPhys_Capillarity.hpp
> 2010-03-31 00:06:48 +0000
> +++ pkg/dem/Engine/GlobalEngine/Law2_ScGeom_CapillaryPhys_Capillarity.hpp
> 2010-04-01 06:17:19 +0000
> @@ -93,7 +93,7 @@
> void action();
> virtual void postProcessAttributes(bool deserializing);
>
> -
> YADE_CLASS_BASE_DOC_ATTRS(Law2_ScGeom_CapillaryPhys_Capillarity,GlobalEngine,"Rk:
> this engine is deprecated -> needs some work to be conform with the new
> formalism! This law allows to take into account capillary forces/effects
> between spheres coming from the presence of interparticular liquid bridges
> (menisci). refs: 1- infrench, (lot of documentation) L. Scholtes, PhD thesis
> -> http://tel.archives-ouvertes.fr/tel-00363961/en/ - 2 in english (less
> documentation) L. Scholtes et al. Micromechanics of granular materials with
> capillary effects. International Journal of Engineering Science 2009,(47)1,
> 64-75. The law needs ascii files M(r=i) with i=R1/R2 to work (see in
> yade/extra/capillaryFiles). These ASCII files contain a set of results from
> the resolution of the Laplace-Young equation for different configurations of
> the interacting geometry. The control parameter is the capillary pressure
> (or suction) Uc = Cgas - Uliquid. Liquid bridges properties (volume V,
> extent over interacting grains delta1 and delta2) are computed as a result
> of the defined capillary pressure and of the interacting geometry (spheres
> radii and interparticular distance).",
> +
> YADE_CLASS_BASE_DOC_ATTRS(Law2_ScGeom_CapillaryPhys_Capillarity,GlobalEngine,"Rk:
> this engine is deprecated -> needs some work to be conform with the new
> formalism!\n\n This law allows to take into account capillary forces/effects
> between spheres coming from the presence of interparticular liquid bridges
> (menisci).\n\n refs:\n\n 1- infrench, (lot of documentation) L. Scholtes,
> PhD thesis -> http://tel.archives-ouvertes.fr/tel-00363961/en/\n\n<http://tel.archives-ouvertes.fr/tel-00363961/en/%5Cn%5Cn>- 2 in english (less documentation) L. Scholtes et al. Micromechanics of
> granular materials with capillary effects. International Journal of
> Engineering Science 2009,(47)1, 64-75.\n\n The law needs ascii files M(r=i)
> with i=R1/R2 to work (see
> https://yade-dem.org/index.php/CapillaryTriaxialTest). These ASCII files
> contain a set of results from the resolution of the Laplace-Young equation
> for different configurations of the interacting geometry.\n\n The control
> parameter is the capillary pressure (or suction) Uc = ugas - Uliquid. Liquid
> bridges properties (volume V, extent over interacting grains delta1 and
> delta2) are computed as a result of the defined capillary pressure and of
> the interacting geometry (spheres radii and interparticular distance).",
> ((int,sdecGroupMask,1,"? the interaction
> only considers particles with same mask ?"))
> ((Real,CapillaryPressure,0.,"Value of the
> capillary pressure Uc defines as Uc=Ugas-Uliquid"))
> ((bool,fusionDetection,false,"If true
> potential menisci overlaps are checked"))
>
> === modified file
> 'pkg/dem/Engine/PartialEngine/CapillaryStressRecorder.cpp'
> --- pkg/dem/Engine/PartialEngine/CapillaryStressRecorder.cpp 2010-03-31
> 00:06:48 +0000
> +++ pkg/dem/Engine/PartialEngine/CapillaryStressRecorder.cpp 2010-04-01
> 06:17:19 +0000
> @@ -26,7 +26,7 @@
>
> // at the beginning of the file; write column titles
> if(out.tellp()==0){
> - out<<"iteration s11 s22 s33 e11 e22 e33 unb_force porosity
> kineticE"<<endl;
> + out<<"iteration Scap11 Scap22 Scap33 Scap12 Scap13 Scap23
> Uc Sr w"<<endl;
> }
> if ( !triaxialCompressionEngine )
> {
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev>
> Post to : yade-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev>
> More help : https://help.launchpad.net/ListHelp
>
>
Follow ups
References