What is the best way to add rate-dependent material?

For developers writing C++, Fortran, Java, code who have questions or comments to make.

Moderators: silvia, selimgunay, Moderators

Post Reply
Rodgers
Posts: 31
Joined: Wed Sep 15, 2004 4:44 pm
Location: University of California, Davis

What is the best way to add rate-dependent material?

Post by Rodgers »

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.
It is not what you can do, it is what you can dream!
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

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

Code: Select all

dT = currentTime - committedTime;
Rodgers
Posts: 31
Joined: Wed Sep 15, 2004 4:44 pm
Location: University of California, Davis

Post by 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.
It is not what you can do, it is what you can dream!
zhaoht
Posts: 7
Joined: Sat Aug 14, 2010 6:03 pm
Location: Hohai University

Post by zhaoht »

[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?
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

the element could always use the currentTime and committedTime in the domain .. look in OPS_Globals.h
Post Reply