New question #690872 on Yade:
https://answers.launchpad.net/yade/+question/690872

Hello,

This question follows the previous answers and advices of Jan 
(https://answers.launchpad.net/yade/+question/690825)
I want to add a method in my yade classes of a contact law for different tests.

- If I refer to the syntax for previous classes ( Cpmphys in ConcretePM.hpp):
https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/ConcretePM.hpp#L202
They use .def() with all the parameters then the declaration of staticmethod
This doesn't exactly look like what Jan proposes in #5 of 
https://answers.launchpad.net/yade/+question/690825  ...

- Concerning the implementation of the method in the .cpp file, here is how it 
looks for me copying  the syntax used for ConcretePM.cpp:

********************************************************************************************************************

CREATE_LOGGER(Law2_ScGeom_VsmPhys_Vsm);
bool Law2_ScGeom_VsmPhys_Vsm::go(shared_ptr<IGeom>& ig, shared_ptr<IPhys>& ip, 
Interaction* contact)
{
        int id1 = contact->getId1(), id2 = contact->getId2();

        ScGeom*    geom = static_cast<ScGeom*>(ig.get());
        VsmPhys* phys = static_cast<VsmPhys*>(ip.get());
        Omega*     om = static_cast<Omega*>(ip.get());

        if (geom->penetrationDepth < 0) {
                if (neverErase) {
                        phys->shearForce  = Vector3r::Zero();
                        phys->normalForce = Vector3r::Zero();
                } else
                        return false;
        }

        Real& Rav               = 2 * (geom->refR1 * geom->refR2)/(geom->refR1 
+ geom->refR2)
        Real& mun               = 3 * phys->viscos 
*(3.14159*Rav**2)*(phys->alfa)**(1/2)            
        Real& mut               = mun/3

        Real& Epsilonpn         =  geom->incidentVel * geom->normal * 
1/(geom->refR1 + geom->refR2 - geom->penetrationDepth)*geom->normal
        
        Real& Fwakai            = phys->Gamma * Rav * (-11.53 * (alfa) + 13.58 
* (alfa)**(1/2) + 0.40)

        phys->normalForce       = (mun * Epsilonpn - Fwakai)* geom->normal;

        phys->shearForce        = mut*geom->shearIncrement()/om->dt

        phys->alfa              = alfa + om->dt *(  
(1-alfa)/(alfa)**(1/2)*(0.38/phys->viscos)*(mun * Epsilonpn - 
Fwakai)/(3.14159*Rav**2) + 
(3/4*(3.14159)**(1/2))**(1/3)*(phys->surftens/phys->viscos)*((3.14159*Rav**2)**(-3/2)
  )

*********************************************************************************************************************
so how should i modify this eventually to implement Jan's option of definition 
of the method in .cpp ?? :
"
Real MyPhys :: computeNewAlpha(...) {
   // here you put the computation, wither directly or possibly using other 
functions, depends..
   return newAlpha;
"

I hope this is clear enough....

Thanks for your input,
All the best

V.


-- 
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

Reply via email to