I don't really know OpenSees that well, so please feel free to correct me if I am wrong. I have just followed the QuickMain project step by step.
According to my observation, OpenSees is designed for rate-independent materials, as it is now.
Although some setTrialStrain has strainRate in there as the input argument, that parameter is never used. This is because an Element does not know the current time and therefore can not tell the embedded material the actual strain rate.
There are several objects that know about currentTime: AnalysisModel, Domain, Integrator.
I guess the easiest way is to provide a pointer to any of these objects in Element, preferably Domain because Element and Domain are both physical objects in a sense.
What is the best way to add rate-dependent material?
Moderators: silvia, selimgunay, Moderators
What is the best way to add rate-dependent material?
It is not what you can do, it is what you can dream!
there is a global variable ops_Dt you can use
..it is the currentTime in the domain minus the last Committed time .. it is set at the start of every update.
in Domain.cpp
..it is the currentTime in the domain minus the last Committed time .. it is set at the start of every update.
in Domain.cpp
Code: Select all
dT = currentTime - committedTime;
Thanks Frank!
I thought ops_Dt was updated too late. But a little more research show that the only time Material::setTrialStrain is called is right after Domain::update.
This means that Newton algorithm has to be used because we need to make sure there is at least two iterations. So Linear algorithm would not work.
Further more, one has to be careful about using NormDisplacement Test because there might be zero increment in displacement but still unbalanced load.
I thought ops_Dt was updated too late. But a little more research show that the only time Material::setTrialStrain is called is right after Domain::update.
This means that Newton algorithm has to be used because we need to make sure there is at least two iterations. So Linear algorithm would not work.
Further more, one has to be careful about using NormDisplacement Test because there might be zero increment in displacement but still unbalanced load.
It is not what you can do, it is what you can dream!
[quote="Rodgers"]Thanks Frank!
I thought ops_Dt was updated too late. But a little more research show that the only time Material::setTrialStrain is called is right after Domain::update.
This means that Newton algorithm has to be used because we need to make sure there is at least two iterations. So Linear algorithm would not work.
Further more, one has to be careful about using NormDisplacement Test because there might be zero increment in displacement but still unbalanced load.[/quote]
I have the same question
has the OpenSees already solve it?
I thought ops_Dt was updated too late. But a little more research show that the only time Material::setTrialStrain is called is right after Domain::update.
This means that Newton algorithm has to be used because we need to make sure there is at least two iterations. So Linear algorithm would not work.
Further more, one has to be careful about using NormDisplacement Test because there might be zero increment in displacement but still unbalanced load.[/quote]
I have the same question
has the OpenSees already solve it?