Subversion Repositories OpenSees

Compare Revisions

Ignore whitespace Rev 1815 → Rev 1874

/trunk/Win32/OpenSees.opt
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/Win32/proj/openSeesTk/openSeesTk.vcproj
21,7 → 21,7
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\src\tcl\include;..\..\..\src\reliability\fesensitivity;..\..\..\src\reliability\tcl;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\reliability\domain;..\..\..\src\reliability\domain\components;..\..\..\src\reliability\domain\distributions;..\..\..\src\reliability\analysis;..\..\..\src\reliability\analysis\analysis;..\..\..\src\reliability\analysis\curvature;..\..\..\src\reliability\analysis\designPoint;..\..\..\src\reliability\analysis\direction;..\..\..\src\reliability\analysis\gFunction;..\..\..\src\reliability\analysis\misc;..\..\..\src\reliability\analysis\randomNumber;..\..\..\src\reliability\analysis\sensitivity;..\..\..\src\reliability\analysis\stepSize;..\..\..\src\reliability\analysis\transformation;..\..\..\src\nDarray;..\..\..\src\system_of_eqn\linearSOE\cg;..\..\..\src\system_of_eqn\linearSOE\itpack;..\..\..\other\superlu_mt;..\..\..\src\database;..\..\..\src\element\updatedLagrangianBeamColumn;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\reliability\domain\modulatingFunction;..\..\..\src\reliability\domain\spectrum;..\..\..\src\reliability\domain\filter;..\..\..\src\reliability\analysis\hessianApproximation;..\..\..\src\reliability\analysis\convergenceCheck;..\..\..\src\reliability\analysis\meritFunction;..\..\..\src\reliability\analysis\rootFinding;&quot;c:\Program Files\Tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
AdditionalIncludeDirectories="..\..\..\src\material\uniaxial\py;..\..\..\src\tcl\include;..\..\..\src\reliability\fesensitivity;..\..\..\src\reliability\tcl;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\reliability\domain;..\..\..\src\reliability\domain\components;..\..\..\src\reliability\domain\distributions;..\..\..\src\reliability\analysis;..\..\..\src\reliability\analysis\analysis;..\..\..\src\reliability\analysis\curvature;..\..\..\src\reliability\analysis\designPoint;..\..\..\src\reliability\analysis\direction;..\..\..\src\reliability\analysis\gFunction;..\..\..\src\reliability\analysis\misc;..\..\..\src\reliability\analysis\randomNumber;..\..\..\src\reliability\analysis\sensitivity;..\..\..\src\reliability\analysis\stepSize;..\..\..\src\reliability\analysis\transformation;..\..\..\src\nDarray;..\..\..\src\system_of_eqn\linearSOE\cg;..\..\..\src\system_of_eqn\linearSOE\itpack;..\..\..\other\superlu_mt;..\..\..\src\database;..\..\..\src\element\updatedLagrangianBeamColumn;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\reliability\domain\modulatingFunction;..\..\..\src\reliability\domain\spectrum;..\..\..\src\reliability\domain\filter;..\..\..\src\reliability\analysis\hessianApproximation;..\..\..\src\reliability\analysis\convergenceCheck;..\..\..\src\reliability\analysis\meritFunction;..\..\..\src\reliability\analysis\rootFinding;&quot;c:\Program Files\tcl\include&quot;"
PreprocessorDefinitions="NDEBUG,_WGL,_RELIABILITY,_WIN32,_FORTRAN,WIN32,_CONSOLE,BUILD_tcl,_TCL84"
StringPooling="TRUE"
RuntimeLibrary="4"
76,7 → 76,7
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\src\tcl\include;..\..\..\src\reliability\fesensitivity;..\..\..\src\reliability\tcl;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\reliability\domain;..\..\..\src\reliability\domain\components;..\..\..\src\reliability\domain\distributions;..\..\..\src\reliability\analysis;..\..\..\src\reliability\analysis\analysis;..\..\..\src\reliability\analysis\curvature;..\..\..\src\reliability\analysis\designPoint;..\..\..\src\reliability\analysis\direction;..\..\..\src\reliability\analysis\gFunction;..\..\..\src\reliability\analysis\misc;..\..\..\src\reliability\analysis\randomNumber;..\..\..\src\reliability\analysis\sensitivity;..\..\..\src\reliability\analysis\stepSize;..\..\..\src\reliability\analysis\transformation;..\..\..\src\nDarray;..\..\..\src\system_of_eqn\linearSOE\cg;..\..\..\src\system_of_eqn\linearSOE\itpack;..\..\..\other\superlu_mt;..\..\..\src\database;..\..\..\src\element\updatedLagrangianBeamColumn;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\reliability\domain\modulatingFunction;..\..\..\src\reliability\domain\spectrum;..\..\..\src\reliability\domain\filter;..\..\..\src\reliability\analysis\hessianApproximation;..\..\..\src\reliability\analysis\convergenceCheck;..\..\..\src\reliability\analysis\meritFunction;..\..\..\src\reliability\analysis\rootFinding;&quot;c:\Program Files\Tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
AdditionalIncludeDirectories="..\..\..\src\material\uniaxial\py;..\..\..\src\tcl\include;..\..\..\src\reliability\fesensitivity;..\..\..\src\reliability\tcl;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\reliability\domain;..\..\..\src\reliability\domain\components;..\..\..\src\reliability\domain\distributions;..\..\..\src\reliability\analysis;..\..\..\src\reliability\analysis\analysis;..\..\..\src\reliability\analysis\curvature;..\..\..\src\reliability\analysis\designPoint;..\..\..\src\reliability\analysis\direction;..\..\..\src\reliability\analysis\gFunction;..\..\..\src\reliability\analysis\misc;..\..\..\src\reliability\analysis\randomNumber;..\..\..\src\reliability\analysis\sensitivity;..\..\..\src\reliability\analysis\stepSize;..\..\..\src\reliability\analysis\transformation;..\..\..\src\nDarray;..\..\..\src\system_of_eqn\linearSOE\cg;..\..\..\src\system_of_eqn\linearSOE\itpack;..\..\..\other\superlu_mt;..\..\..\src\database;..\..\..\src\element\updatedLagrangianBeamColumn;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\reliability\domain\modulatingFunction;..\..\..\src\reliability\domain\spectrum;..\..\..\src\reliability\domain\filter;..\..\..\src\reliability\analysis\hessianApproximation;..\..\..\src\reliability\analysis\convergenceCheck;..\..\..\src\reliability\analysis\meritFunction;..\..\..\src\reliability\analysis\rootFinding;&quot;c:\Program Files\tcl\include&quot;"
PreprocessorDefinitions="_DEBUG,_WGL,_RELIABILITY,_WIN32,_FORTRAN,WIN32,_CONSOLE,BUILD_tcl,_TCL84"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
/trunk/Win32/proj/openSeesTk/openSeesTk.dsp
42,7 → 42,7
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\src\tcl\include" /I "..\..\..\src\reliability\fesensitivity" /I "..\..\..\src\reliability\tcl" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\reliability\domain" /I "..\..\..\src\reliability\domain\components" /I "..\..\..\src\reliability\domain\distributions" /I "..\..\..\src\reliability\analysis" /I "..\..\..\src\reliability\analysis\analysis" /I "..\..\..\src\reliability\analysis\curvature" /I "..\..\..\src\reliability\analysis\designPoint" /I "..\..\..\src\reliability\analysis\direction" /I "..\..\..\src\reliability\analysis\gFunction" /I "..\..\..\src\reliability\analysis\misc" /I "..\..\..\src\reliability\analysis\randomNumber" /I "..\..\..\src\reliability\analysis\sensitivity" /I "..\..\..\src\reliability\analysis\stepSize" /I "..\..\..\src\reliability\analysis\transformation" /I "..\..\..\src\nDarray" /I "..\..\..\src\system_of_eqn\linearSOE\cg" /I "..\..\..\src\system_of_eqn\linearSOE\itpack" /I "..\..\..\other\superlu_mt" /I "..\..\..\src\database" /I "..\..\..\src\element\updatedLagrangianBeamColumn" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\reliability\domain\modulatingFunction" /I "..\..\..\src\reliability\domain\spectrum" /I "..\..\..\src\reliability\domain\filter" /I "..\..\..\src\reliability\analysis\hessianApproximation" /I "..\..\..\src\reliability\analysis\convergenceCheck" /I "..\..\..\src\reliability\analysis\meritFunction" /I "..\..\..\src\reliability\analysis\rootFinding" /I "c:\Program Files\tcl" /D "NDEBUG" /D "_WGL" /D "_RELIABILITY" /D "_WIN32" /D "_FORTRAN" /D "WIN32" /D "_CONSOLE" /D "BUILD_tcl" /D "_MBCS" /D "_TCL84" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\src\material\uniaxial\py" /I "..\..\..\src\tcl\include" /I "..\..\..\src\reliability\fesensitivity" /I "..\..\..\src\reliability\tcl" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\reliability\domain" /I "..\..\..\src\reliability\domain\components" /I "..\..\..\src\reliability\domain\distributions" /I "..\..\..\src\reliability\analysis" /I "..\..\..\src\reliability\analysis\analysis" /I "..\..\..\src\reliability\analysis\curvature" /I "..\..\..\src\reliability\analysis\designPoint" /I "..\..\..\src\reliability\analysis\direction" /I "..\..\..\src\reliability\analysis\gFunction" /I "..\..\..\src\reliability\analysis\misc" /I "..\..\..\src\reliability\analysis\randomNumber" /I "..\..\..\src\reliability\analysis\sensitivity" /I "..\..\..\src\reliability\analysis\stepSize" /I "..\..\..\src\reliability\analysis\transformation" /I "..\..\..\src\nDarray" /I "..\..\..\src\system_of_eqn\linearSOE\cg" /I "..\..\..\src\system_of_eqn\linearSOE\itpack" /I "..\..\..\other\superlu_mt" /I "..\..\..\src\database" /I "..\..\..\src\element\updatedLagrangianBeamColumn" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\reliability\domain\modulatingFunction" /I "..\..\..\src\reliability\domain\spectrum" /I "..\..\..\src\reliability\domain\filter" /I "..\..\..\src\reliability\analysis\hessianApproximation" /I "..\..\..\src\reliability\analysis\convergenceCheck" /I "..\..\..\src\reliability\analysis\meritFunction" /I "..\..\..\src\reliability\analysis\rootFinding" /I "c:\Program Files\tcl" /D "NDEBUG" /D "_WGL" /D "_RELIABILITY" /D "_WIN32" /D "_FORTRAN" /D "WIN32" /D "_CONSOLE" /D "BUILD_tcl" /D "_MBCS" /D "_TCL84" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
67,7 → 67,7
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\src\tcl\include" /I "..\..\..\src\reliability\fesensitivity" /I "..\..\..\src\reliability\tcl" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\reliability\domain" /I "..\..\..\src\reliability\domain\components" /I "..\..\..\src\reliability\domain\distributions" /I "..\..\..\src\reliability\analysis" /I "..\..\..\src\reliability\analysis\analysis" /I "..\..\..\src\reliability\analysis\curvature" /I "..\..\..\src\reliability\analysis\designPoint" /I "..\..\..\src\reliability\analysis\direction" /I "..\..\..\src\reliability\analysis\gFunction" /I "..\..\..\src\reliability\analysis\misc" /I "..\..\..\src\reliability\analysis\randomNumber" /I "..\..\..\src\reliability\analysis\sensitivity" /I "..\..\..\src\reliability\analysis\stepSize" /I "..\..\..\src\reliability\analysis\transformation" /I "..\..\..\src\nDarray" /I "..\..\..\src\system_of_eqn\linearSOE\cg" /I "..\..\..\src\system_of_eqn\linearSOE\itpack" /I "..\..\..\other\superlu_mt" /I "..\..\..\src\database" /I "..\..\..\src\element\updatedLagrangianBeamColumn" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\reliability\domain\modulatingFunction" /I "..\..\..\src\reliability\domain\spectrum" /I "..\..\..\src\reliability\domain\filter" /I "..\..\..\src\reliability\analysis\hessianApproximation" /I "..\..\..\src\reliability\analysis\convergenceCheck" /I "..\..\..\src\reliability\analysis\meritFunction" /I "..\..\..\src\reliability\analysis\rootFinding" /I "c:\Program Files\tcl" /D "_DEBUG" /D "_WGL" /D "_RELIABILITY" /D "_WIN32" /D "_FORTRAN" /D "WIN32" /D "_CONSOLE" /D "BUILD_tcl" /D "_MBCS" /D "_TCL84" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\src\uniaxial\py" /I "..\..\..\src\tcl\include" /I "..\..\..\src\reliability\fesensitivity" /I "..\..\..\src\reliability\tcl" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\reliability\domain" /I "..\..\..\src\reliability\domain\components" /I "..\..\..\src\reliability\domain\distributions" /I "..\..\..\src\reliability\analysis" /I "..\..\..\src\reliability\analysis\analysis" /I "..\..\..\src\reliability\analysis\curvature" /I "..\..\..\src\reliability\analysis\designPoint" /I "..\..\..\src\reliability\analysis\direction" /I "..\..\..\src\reliability\analysis\gFunction" /I "..\..\..\src\reliability\analysis\misc" /I "..\..\..\src\reliability\analysis\randomNumber" /I "..\..\..\src\reliability\analysis\sensitivity" /I "..\..\..\src\reliability\analysis\stepSize" /I "..\..\..\src\reliability\analysis\transformation" /I "..\..\..\src\nDarray" /I "..\..\..\src\system_of_eqn\linearSOE\cg" /I "..\..\..\src\system_of_eqn\linearSOE\itpack" /I "..\..\..\other\superlu_mt" /I "..\..\..\src\database" /I "..\..\..\src\element\updatedLagrangianBeamColumn" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\reliability\domain\modulatingFunction" /I "..\..\..\src\reliability\domain\spectrum" /I "..\..\..\src\reliability\domain\filter" /I "..\..\..\src\reliability\analysis\hessianApproximation" /I "..\..\..\src\reliability\analysis\convergenceCheck" /I "..\..\..\src\reliability\analysis\meritFunction" /I "..\..\..\src\reliability\analysis\rootFinding" /I "c:\Program Files\tcl" /D "_DEBUG" /D "_WGL" /D "_RELIABILITY" /D "_WIN32" /D "_FORTRAN" /D "WIN32" /D "_CONSOLE" /D "BUILD_tcl" /D "_MBCS" /D "_TCL84" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
/trunk/Win32/proj/openSees/openSees.vcproj
14,14 → 14,14
Name="Release|Win32"
OutputDirectory=".\..\..\bin"
IntermediateDirectory=".\..\..\obj\openSees\release"
ConfigurationType="2"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\src\reliability\fesensitivity;..\..\..\src\reliability\tcl;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\reliability\domain;..\..\..\src\reliability\domain\components;..\..\..\src\reliability\domain\distributions;..\..\..\src\reliability\analysis;..\..\..\src\reliability\analysis\analysis;..\..\..\src\reliability\analysis\curvature;..\..\..\src\reliability\analysis\designPoint;..\..\..\src\reliability\analysis\direction;..\..\..\src\reliability\analysis\gFunction;..\..\..\src\reliability\analysis\misc;..\..\..\src\reliability\analysis\randomNumber;..\..\..\src\reliability\analysis\sensitivity;..\..\..\src\reliability\analysis\stepSize;..\..\..\src\reliability\analysis\transformation;..\..\..\src\nDarray;..\..\..\src\system_of_eqn\linearSOE\cg;..\..\..\src\system_of_eqn\linearSOE\itpack;..\..\..\other\superlu_mt;..\..\..\src\database;..\..\..\src\element\updatedLagrangianBeamColumn;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\reliability\domain\modulatingFunction;..\..\..\src\reliability\domain\spectrum;..\..\..\src\reliability\domain\filter;..\..\..\src\reliability\analysis\hessianApproximation;..\..\..\src\reliability\analysis\convergenceCheck;..\..\..\src\reliability\analysis\meritFunction;..\..\..\src\reliability\analysis\rootFinding;&quot;c:\Program Files\Tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
AdditionalIncludeDirectories="..\..\..\src\material\uniaxial\py,..\..\..\src\reliability\fesensitivity;..\..\..\src\reliability\tcl;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\reliability\domain;..\..\..\src\reliability\domain\components;..\..\..\src\reliability\domain\distributions;..\..\..\src\reliability\analysis;..\..\..\src\reliability\analysis\analysis;..\..\..\src\reliability\analysis\curvature;..\..\..\src\reliability\analysis\designPoint;..\..\..\src\reliability\analysis\direction;..\..\..\src\reliability\analysis\gFunction;..\..\..\src\reliability\analysis\misc;..\..\..\src\reliability\analysis\randomNumber;..\..\..\src\reliability\analysis\sensitivity;..\..\..\src\reliability\analysis\stepSize;..\..\..\src\reliability\analysis\transformation;..\..\..\src\nDarray;..\..\..\src\system_of_eqn\linearSOE\cg;..\..\..\src\system_of_eqn\linearSOE\itpack;..\..\..\other\superlu_mt;..\..\..\src\database;..\..\..\src\element\updatedLagrangianBeamColumn;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\reliability\domain\modulatingFunction;..\..\..\src\reliability\domain\spectrum;..\..\..\src\reliability\domain\filter;..\..\..\src\reliability\analysis\hessianApproximation;..\..\..\src\reliability\analysis\convergenceCheck;..\..\..\src\reliability\analysis\meritFunction;..\..\..\src\reliability\analysis\rootFinding;&quot;c:\Program Files\Tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
PreprocessorDefinitions="NDEBUG,_WGL,_RELIABILITY,_WIN32,_FORTRAN,WIN32,_CONSOLE,BUILD_tcl,_TCL84"
StringPooling="TRUE"
RuntimeLibrary="5"
37,9 → 37,9
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalOptions="/MACHINE:I386 /FORCE:MULTIPLE"
AdditionalDependencies="OpenGL32.lib glu32.lib GlAux.lib corotational.lib fedeas.lib drain.lib reliability.lib database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib tcl84.lib tk84.lib odbc32.lib odbccp32.lib"
OutputFile=".\..\..\bin/openSees.dll"
OutputFile=".\..\..\bin/openSees.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="c:\program Files\tcl\lib,..\..\lib\release, ..\..\lib"
74,7 → 74,7
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\src\reliability\fesensitivity;..\..\..\src\reliability\tcl;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\reliability\domain;..\..\..\src\reliability\domain\components;..\..\..\src\reliability\domain\distributions;..\..\..\src\reliability\analysis;..\..\..\src\reliability\analysis\analysis;..\..\..\src\reliability\analysis\curvature;..\..\..\src\reliability\analysis\designPoint;..\..\..\src\reliability\analysis\direction;..\..\..\src\reliability\analysis\gFunction;..\..\..\src\reliability\analysis\misc;..\..\..\src\reliability\analysis\randomNumber;..\..\..\src\reliability\analysis\sensitivity;..\..\..\src\reliability\analysis\stepSize;..\..\..\src\reliability\analysis\transformation;..\..\..\src\nDarray;..\..\..\src\system_of_eqn\linearSOE\cg;..\..\..\src\system_of_eqn\linearSOE\itpack;..\..\..\other\superlu_mt;..\..\..\src\database;..\..\..\src\element\updatedLagrangianBeamColumn;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\reliability\domain\modulatingFunction;..\..\..\src\reliability\domain\spectrum;..\..\..\src\reliability\domain\filter;..\..\..\src\reliability\analysis\hessianApproximation;..\..\..\src\reliability\analysis\convergenceCheck;..\..\..\src\reliability\analysis\meritFunction;..\..\..\src\reliability\analysis\rootFinding;&quot;c:\Program Files\Tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
AdditionalIncludeDirectories="..\..\..\src\material\uniaxial\py,..\..\..\src\reliability\fesensitivity;..\..\..\src\reliability\tcl;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\reliability\domain;..\..\..\src\reliability\domain\components;..\..\..\src\reliability\domain\distributions;..\..\..\src\reliability\analysis;..\..\..\src\reliability\analysis\analysis;..\..\..\src\reliability\analysis\curvature;..\..\..\src\reliability\analysis\designPoint;..\..\..\src\reliability\analysis\direction;..\..\..\src\reliability\analysis\gFunction;..\..\..\src\reliability\analysis\misc;..\..\..\src\reliability\analysis\randomNumber;..\..\..\src\reliability\analysis\sensitivity;..\..\..\src\reliability\analysis\stepSize;..\..\..\src\reliability\analysis\transformation;..\..\..\src\nDarray;..\..\..\src\system_of_eqn\linearSOE\cg;..\..\..\src\system_of_eqn\linearSOE\itpack;..\..\..\other\superlu_mt;..\..\..\src\database;..\..\..\src\element\updatedLagrangianBeamColumn;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\reliability\domain\modulatingFunction;..\..\..\src\reliability\domain\spectrum;..\..\..\src\reliability\domain\filter;..\..\..\src\reliability\analysis\hessianApproximation;..\..\..\src\reliability\analysis\convergenceCheck;..\..\..\src\reliability\analysis\meritFunction;..\..\..\src\reliability\analysis\rootFinding;&quot;c:\Program Files\Tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
PreprocessorDefinitions="_DEBUG,_WGL,_RELIABILITY,_WIN32,_FORTRAN,WIN32,_CONSOLE,BUILD_tcl,_TCL84"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
91,7 → 91,7
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalOptions="/MACHINE:I386 /FORCE:MULTIPLE"
AdditionalDependencies="OpenGL32.lib glu32.lib GlAux.lib corotational.lib fedeas.lib drain.lib reliability.lib database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib tcl84.lib tk84.lib odbc32.lib odbccp32.lib"
OutputFile=".\..\..\bin/openSees.exe"
LinkIncremental="2"
/trunk/Win32/proj/openSees/openSees.dsp
42,7 → 42,7
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MLd /W3 /GX /O2 /I "..\..\..\src\reliability\fesensitivity" /I "..\..\..\src\reliability\tcl" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\reliability\domain" /I "..\..\..\src\reliability\domain\components" /I "..\..\..\src\reliability\domain\distributions" /I "..\..\..\src\reliability\analysis" /I "..\..\..\src\reliability\analysis\analysis" /I "..\..\..\src\reliability\analysis\curvature" /I "..\..\..\src\reliability\analysis\designPoint" /I "..\..\..\src\reliability\analysis\direction" /I "..\..\..\src\reliability\analysis\gFunction" /I "..\..\..\src\reliability\analysis\misc" /I "..\..\..\src\reliability\analysis\randomNumber" /I "..\..\..\src\reliability\analysis\sensitivity" /I "..\..\..\src\reliability\analysis\stepSize" /I "..\..\..\src\reliability\analysis\transformation" /I "..\..\..\src\nDarray" /I "..\..\..\src\system_of_eqn\linearSOE\cg" /I "..\..\..\src\system_of_eqn\linearSOE\itpack" /I "..\..\..\other\superlu_mt" /I "..\..\..\src\database" /I "..\..\..\src\element\updatedLagrangianBeamColumn" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\reliability\domain\modulatingFunction" /I "..\..\..\src\reliability\domain\spectrum" /I "..\..\..\src\reliability\domain\filter" /I "..\..\..\src\reliability\analysis\hessianApproximation" /I "..\..\..\src\reliability\analysis\convergenceCheck" /I "..\..\..\src\reliability\analysis\meritFunction" /I "..\..\..\src\reliability\analysis\rootFinding" /I "c:\Program Files\tcl" /D "NDEBUG" /D "_WGL" /D "_RELIABILITY" /D "_WIN32" /D "_FORTRAN" /D "WIN32" /D "_CONSOLE" /D "BUILD_tcl" /D "_MBCS" /D "_TCL84" /FD /c
# ADD CPP /nologo /MLd /W3 /GX /O2 /I "..\..\..\src\material\uniaxial\py" /I "..\..\..\src\reliability\fesensitivity" /I "..\..\..\src\reliability\tcl" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\reliability\domain" /I "..\..\..\src\reliability\domain\components" /I "..\..\..\src\reliability\domain\distributions" /I "..\..\..\src\reliability\analysis" /I "..\..\..\src\reliability\analysis\analysis" /I "..\..\..\src\reliability\analysis\curvature" /I "..\..\..\src\reliability\analysis\designPoint" /I "..\..\..\src\reliability\analysis\direction" /I "..\..\..\src\reliability\analysis\gFunction" /I "..\..\..\src\reliability\analysis\misc" /I "..\..\..\src\reliability\analysis\randomNumber" /I "..\..\..\src\reliability\analysis\sensitivity" /I "..\..\..\src\reliability\analysis\stepSize" /I "..\..\..\src\reliability\analysis\transformation" /I "..\..\..\src\nDarray" /I "..\..\..\src\system_of_eqn\linearSOE\cg" /I "..\..\..\src\system_of_eqn\linearSOE\itpack" /I "..\..\..\other\superlu_mt" /I "..\..\..\src\database" /I "..\..\..\src\element\updatedLagrangianBeamColumn" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\reliability\domain\modulatingFunction" /I "..\..\..\src\reliability\domain\spectrum" /I "..\..\..\src\reliability\domain\filter" /I "..\..\..\src\reliability\analysis\hessianApproximation" /I "..\..\..\src\reliability\analysis\convergenceCheck" /I "..\..\..\src\reliability\analysis\meritFunction" /I "..\..\..\src\reliability\analysis\rootFinding" /I "c:\Program Files\tcl" /D "NDEBUG" /D "_WGL" /D "_RELIABILITY" /D "_WIN32" /D "_FORTRAN" /D "WIN32" /D "_CONSOLE" /D "BUILD_tcl" /D "_MBCS" /D "_TCL84" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
67,7 → 67,7
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /GX /ZI /Od /I "..\..\..\src\reliability\fesensitivity" /I "..\..\..\src\reliability\tcl" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\reliability\domain" /I "..\..\..\src\reliability\domain\components" /I "..\..\..\src\reliability\domain\distributions" /I "..\..\..\src\reliability\analysis" /I "..\..\..\src\reliability\analysis\analysis" /I "..\..\..\src\reliability\analysis\curvature" /I "..\..\..\src\reliability\analysis\designPoint" /I "..\..\..\src\reliability\analysis\direction" /I "..\..\..\src\reliability\analysis\gFunction" /I "..\..\..\src\reliability\analysis\misc" /I "..\..\..\src\reliability\analysis\randomNumber" /I "..\..\..\src\reliability\analysis\sensitivity" /I "..\..\..\src\reliability\analysis\stepSize" /I "..\..\..\src\reliability\analysis\transformation" /I "..\..\..\src\nDarray" /I "..\..\..\src\system_of_eqn\linearSOE\cg" /I "..\..\..\src\system_of_eqn\linearSOE\itpack" /I "..\..\..\other\superlu_mt" /I "..\..\..\src\database" /I "..\..\..\src\element\updatedLagrangianBeamColumn" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\reliability\domain\modulatingFunction" /I "..\..\..\src\reliability\domain\spectrum" /I "..\..\..\src\reliability\domain\filter" /I "..\..\..\src\reliability\analysis\hessianApproximation" /I "..\..\..\src\reliability\analysis\convergenceCheck" /I "..\..\..\src\reliability\analysis\meritFunction" /I "..\..\..\src\reliability\analysis\rootFinding" /I "c:\Program Files\tcl" /D "_DEBUG" /D "_WGL" /D "_RELIABILITY" /D "_WIN32" /D "_FORTRAN" /D "WIN32" /D "_CONSOLE" /D "BUILD_tcl" /D "_MBCS" /D "_TCL84" /FR /FD /GZ
# ADD CPP /nologo /W3 /GX /ZI /Od /I "..\..\..\src\material\uniaxial\py" /I "..\..\..\src\reliability\fesensitivity" /I "..\..\..\src\reliability\tcl" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\reliability\domain" /I "..\..\..\src\reliability\domain\components" /I "..\..\..\src\reliability\domain\distributions" /I "..\..\..\src\reliability\analysis" /I "..\..\..\src\reliability\analysis\analysis" /I "..\..\..\src\reliability\analysis\curvature" /I "..\..\..\src\reliability\analysis\designPoint" /I "..\..\..\src\reliability\analysis\direction" /I "..\..\..\src\reliability\analysis\gFunction" /I "..\..\..\src\reliability\analysis\misc" /I "..\..\..\src\reliability\analysis\randomNumber" /I "..\..\..\src\reliability\analysis\sensitivity" /I "..\..\..\src\reliability\analysis\stepSize" /I "..\..\..\src\reliability\analysis\transformation" /I "..\..\..\src\nDarray" /I "..\..\..\src\system_of_eqn\linearSOE\cg" /I "..\..\..\src\system_of_eqn\linearSOE\itpack" /I "..\..\..\other\superlu_mt" /I "..\..\..\src\database" /I "..\..\..\src\element\updatedLagrangianBeamColumn" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\reliability\domain\modulatingFunction" /I "..\..\..\src\reliability\domain\spectrum" /I "..\..\..\src\reliability\domain\filter" /I "..\..\..\src\reliability\analysis\hessianApproximation" /I "..\..\..\src\reliability\analysis\convergenceCheck" /I "..\..\..\src\reliability\analysis\meritFunction" /I "..\..\..\src\reliability\analysis\rootFinding" /I "c:\Program Files\tcl" /D "_DEBUG" /D "_WGL" /D "_RELIABILITY" /D "_WIN32" /D "_FORTRAN" /D "WIN32" /D "_CONSOLE" /D "BUILD_tcl" /D "_MBCS" /D "_TCL84" /FR /FD /GZ
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
/trunk/Win32/proj/quickMain/quickMain.vcproj
21,7 → 21,7
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\src\ndarray;..\..\src\domain\groundMotion;..\..\src\domain\load;..\..\src\domain\pattern;..\..\src\element;..\..\src\element\truss;..\..\src\graph\graph;..\..\src\graph\numberer;..\..\src\system_of_eqn;..\..\src\system_of_eqn\linearSOE;..\..\src\system_of_eqn\linearSOE\sparseGen;..\..\src\analysis\analysis;..\..\src\convergenceTest;..\..\src\analysis\integrator;..\..\src\analysis\numberer;..\..\src\domain\constraints;..\..\src\analysis\handler;..\..\src\analysis\algorithm;..\..\src\analysis\model\simple;..\..\src\matrix;..\..\src;..\..\src\actor\actor;..\..\src\tagged;..\..\src\domain\component;..\..\src\analysis\algorithm\equiSolnAlgo;..\..\src\analysis\model;..\..\src\domain\domain;..\..\src\domain\node;..\..\src\modelbuilder;..\..\src\utility;..\..\..\src\domain\groundMotion;..\..\..\src\element\nonlinearBeamColumn\quadrule;..\..\..\src\material\section\fiber;..\..\..\src\element\fourNodeQuad;..\..\..\src\element\nonlinearBeamColumn\element;..\..\..\src\element\zeroLength;..\..\..\src\element\beamWithHinges;..\..\..\src\recorder\response;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\material\nD\template3Dep;&quot;c:\Program Files\tcl&quot;"
AdditionalIncludeDirectories="..\..\..\src\ndarray;..\..\src\domain\groundMotion;..\..\src\domain\load;..\..\src\domain\pattern;..\..\src\element;..\..\src\element\truss;..\..\src\graph\graph;..\..\src\graph\numberer;..\..\src\system_of_eqn;..\..\src\system_of_eqn\linearSOE;..\..\src\system_of_eqn\linearSOE\sparseGen;..\..\src\analysis\analysis;..\..\src\convergenceTest;..\..\src\analysis\integrator;..\..\src\analysis\numberer;..\..\src\domain\constraints;..\..\src\analysis\handler;..\..\src\analysis\algorithm;..\..\src\analysis\model\simple;..\..\src\matrix;..\..\src;..\..\src\actor\actor;..\..\src\tagged;..\..\src\domain\component;..\..\src\analysis\algorithm\equiSolnAlgo;..\..\src\analysis\model;..\..\src\domain\domain;..\..\src\domain\node;..\..\src\modelbuilder;..\..\src\utility;..\..\..\src\domain\groundMotion;..\..\..\src\element\nonlinearBeamColumn\quadrule;..\..\..\src\material\section\fiber;..\..\..\src\element\fourNodeQuad;..\..\..\src\element\nonlinearBeamColumn\element;..\..\..\src\element\zeroLength;..\..\..\src\element\beamWithHinges;..\..\..\src\recorder\response;..\..\..\src\coordTransformation;..\..\..\src\material\section\repres\section;..\..\..\src\analysis\algorithm\equiSolnAlgo;..\..\..\src\system_of_eqn\eigenSOE;..\..\..\src\analysis\algorithm\eigenAlgo;..\..\..\src\material\nD;..\..\..\src\material\uniaxial;..\..\..\src\handler;..\..\..\src\tcl;..\..\..\src\actor\objectBroker;..\..\..\src\system_of_eqn\linearSOE\umfGEN;..\..\..\src\system_of_eqn\linearSOE\fullGEN;..\..\..\src\system_of_eqn\linearSOE\sparseGEN;..\..\..\src\system_of_eqn\linearSOE\bandSPD;..\..\..\src\system_of_eqn\linearSOE\bandGEN;..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section;..\..\..\src\matrix;..\..\..\src\recorder;..\..\..\src\graph\numberer;..\..\..\src\material\section;..\..\..\src\graph\graph;..\..\..\src\element\beam2d;..\..\..\src\element\beam3d;..\..\..\src\system_of_eqn;..\..\..\src\system_of_eqn\linearSOE;..\..\..\src\system_of_eqn\linearSOE\profileSPD;..\..\..\src\system_of_eqn\linearSOE\sparseSYM;..\..\..\src\domain\pattern;..\..\..\src\analysis\analysis;..\..\..\src\analysis\integrator;..\..\..\src\analysis\numberer;..\..\..\src\analysis\handler;..\..\..\src\renderer;..\..\..\src\material;..\..\..\src\analysis\algorithm;..\..\..\src\convergenceTest;..\..\..\src\analysis\model\simple;..\..\..\src\domain\load;..\..\..\src\analysis\model;..\..\..\src\element\truss;..\..\..\src\actor\channel;..\..\..\src\utility;..\..\..\src\actor\actor;..\..\..\src\modelbuilder;..\..\..\src\modelbuilder\tcl;..\..\..\src\domain\constraints;..\..\..\src\domain\component;..\..\..\src\element;..\..\..\src\domain\node;..\..\..\src\domain\domain;..\..\..\src\tagged\storage;..\..\..\src;..\..\..\src\tagged;..\..\..\src\material\nD\template3Dep;&quot;c:\Program Files\tcl&quot;"
PreprocessorDefinitions="_WIN32,WIN32,_DEBUG,_CONSOLE,_TCL84"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
39,7 → 39,7
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib nonlinearBeamColumn.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib tcl83.lib tk83.lib odbc32.lib odbccp32.lib OpenGL32.lib glu32.lib GlAux.lib"
AdditionalDependencies="reliability.lib actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib tcl84.lib tk84.lib odbc32.lib odbccp32.lib OpenGL32.lib glu32.lib GlAux.lib"
OutputFile=".\..\..\bin/quickMain.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
77,7 → 77,7
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\src\ndarray,..\..\..\src\domain\groundMotion,..\..\..\src\element\nonlinearBeamColumn\quadrule,..\..\..\src\material\section\fiber,..\..\..\src\element\fourNodeQuad,..\..\..\src\element\nonlinearBeamColumn\element,..\..\..\src\element\zeroLength,..\..\..\src\element\beamWithHinges,..\..\..\src\recorder\response,..\..\..\src\coordTransformation,..\..\..\src\material\section\repres\section,..\..\..\src\analysis\algorithm\equiSolnAlgo,..\..\..\src\system_of_eqn\eigenSOE,..\..\..\src\analysis\algorithm\eigenAlgo,..\..\..\src\material\nD,..\..\..\src\material\uniaxial,..\..\..\src\handler,..\..\..\src\tcl,..\..\..\src\actor\objectBroker,..\..\..\src\system_of_eqn\linearSOE\umfGEN,..\..\..\src\system_of_eqn\linearSOE\fullGEN,..\..\..\src\system_of_eqn\linearSOE\sparseGEN,..\..\..\src\system_of_eqn\linearSOE\bandSPD,..\..\..\src\system_of_eqn\linearSOE\bandGEN,..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section,..\..\..\src\matrix,..\..\..\src\recorder,..\..\..\src\graph\numberer,..\..\..\src\material\section,..\..\..\src\graph\graph,..\..\..\src\element\beam2d,..\..\..\src\element\beam3d,..\..\..\src\system_of_eqn,..\..\..\src\system_of_eqn\linearSOE,..\..\..\src\system_of_eqn\linearSOE\profileSPD,..\..\..\src\system_of_eqn\linearSOE\sparseSYM,..\..\..\src\domain\pattern,..\..\..\src\analysis\analysis,..\..\..\src\analysis\integrator,..\..\..\src\analysis\numberer,..\..\..\src\analysis\handler,..\..\..\src\renderer,..\..\..\src\material,..\..\..\src\analysis\algorithm,..\..\..\src\convergenceTest,..\..\..\src\analysis\model\simple,..\..\..\src\domain\load,..\..\..\src\analysis\model,..\..\..\src\element\truss,..\..\..\src\actor\channel,..\..\..\src\utility,..\..\..\src\actor\actor,..\..\..\src\modelbuilder,..\..\..\src\modelbuilder\tcl,..\..\..\src\domain\constraints,..\..\..\src\domain\component,..\..\..\src\element,..\..\..\src\domain\node,..\..\..\src\domain\domain,..\..\..\src\tagged\storage,..\..\..\src,..\..\..\src\tagged,..\..\..\src\material\nD\template3Dep,c:\Program Files\tcl"
AdditionalIncludeDirectories="..\..\..\src\ndarray,..\..\..\src\domain\groundMotion,..\..\..\src\element\nonlinearBeamColumn\quadrule,..\..\..\src\material\section\fiber,..\..\..\src\element\fourNodeQuad,..\..\..\src\element\nonlinearBeamColumn\element,..\..\..\src\element\zeroLength,..\..\..\src\element\beamWithHinges,..\..\..\src\recorder\response,..\..\..\src\coordTransformation,..\..\..\src\material\section\repres\section,..\..\..\src\analysis\algorithm\equiSolnAlgo,..\..\..\src\system_of_eqn\eigenSOE,..\..\..\src\analysis\algorithm\eigenAlgo,..\..\..\src\material\nD,..\..\..\src\material\uniaxial,..\..\..\src\handler,..\..\..\src\tcl,..\..\..\src\actor\objectBroker,..\..\..\src\system_of_eqn\linearSOE\umfGEN,..\..\..\src\system_of_eqn\linearSOE\fullGEN,..\..\..\src\system_of_eqn\linearSOE\sparseGEN,..\..\..\src\system_of_eqn\linearSOE\bandSPD,..\..\..\src\system_of_eqn\linearSOE\bandGEN,..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section,..\..\..\src\matrix,..\..\..\src\recorder,..\..\..\src\graph\numberer,..\..\..\src\material\section,..\..\..\src\graph\graph,..\..\..\src\element\beam2d,..\..\..\src\element\beam3d,..\..\..\src\system_of_eqn,..\..\..\src\system_of_eqn\linearSOE,..\..\..\src\system_of_eqn\linearSOE\profileSPD,..\..\..\src\system_of_eqn\linearSOE\sparseSYM,..\..\..\src\domain\pattern,..\..\..\src\analysis\analysis,..\..\..\src\analysis\integrator,..\..\..\src\analysis\numberer,..\..\..\src\analysis\handler,..\..\..\src\renderer,..\..\..\src\material,..\..\..\src\analysis\algorithm,..\..\..\src\convergenceTest,..\..\..\src\analysis\model\simple,..\..\..\src\domain\load,..\..\..\src\analysis\model,..\..\..\src\element\truss,..\..\..\src\actor\channel,..\..\..\src\utility,..\..\..\src\actor\actor,..\..\..\src\modelbuilder,..\..\..\src\modelbuilder\tcl,..\..\..\src\domain\constraints,..\..\..\src\domain\component,..\..\..\src\element,..\..\..\src\domain\node,..\..\..\src\domain\domain,..\..\..\src\tagged\storage,..\..\..\src,..\..\..\src\tagged,..\..\..\src\material\nD\template3Dep,c:\Program Files\tcl"
PreprocessorDefinitions="_WIN32,WIN32,NDEBUG,_CONSOLE,_TCL84"
StringPooling="TRUE"
RuntimeLibrary="5"
94,7 → 94,7
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib nonlinearBeamColumn.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib tcl82.lib tk83.lib odbc32.lib odbccp32.lib OpenGL32.lib glu32.lib GlAux.lib"
AdditionalDependencies="reliability.lib database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib tcl84.lib tk84.lib odbc32.lib odbccp32.lib OpenGL32.lib glu32.lib GlAux.lib"
OutputFile=".\..\..\bin/quickMain.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
/trunk/Win32/proj/quickMain/quickMain.dsp
42,7 → 42,7
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MLd /W3 /GX /O2 /I "..\..\..\src\domain\groundMotion" /I "..\..\..\src\element\nonlinearBeamColumn\quadrule" /I "..\..\..\src\material\section\fiber" /I "..\..\..\src\element\fourNodeQuad" /I "..\..\..\src\element\nonlinearBeamColumn\element" /I "..\..\..\src\element\zeroLength" /I "..\..\..\src\element\beamWithHinges" /I "..\..\..\src\recorder\response" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\material\nD\template3Dep" /I "c:\Program Files\tcl" /D "_WIN32" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_TCL84" /FD /c
# ADD CPP /nologo /MLd /W3 /GX /O2 /I "..\..\..\src\ndarray" /I "..\..\..\src\domain\groundMotion" /I "..\..\..\src\element\nonlinearBeamColumn\quadrule" /I "..\..\..\src\material\section\fiber" /I "..\..\..\src\element\fourNodeQuad" /I "..\..\..\src\element\nonlinearBeamColumn\element" /I "..\..\..\src\element\zeroLength" /I "..\..\..\src\element\beamWithHinges" /I "..\..\..\src\recorder\response" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\material\nD\template3Dep" /I "c:\Program Files\tcl" /D "_WIN32" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_TCL84" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
51,7 → 51,7
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib nonlinearBeamColumn.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib tcl82.lib tk83.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib OpenGL32.lib glu32.lib GlAux.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libc.lib" /libpath:"c:\Program Files\tcl\lib" /libpath:"c:\msdev\lib" /libpath:"..\..\lib" /libpath:"..\..\lib\release" /FORCE:MULTIPLE
# ADD LINK32 reliability.lib database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib tcl84.lib tk84.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib OpenGL32.lib glu32.lib GlAux.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libc.lib" /libpath:"c:\Program Files\tcl\lib" /libpath:"c:\msdev\lib" /libpath:"..\..\lib" /libpath:"..\..\lib\release" /FORCE:MULTIPLE
# SUBTRACT LINK32 /pdb:none
 
!ELSEIF "$(CFG)" == "quickMain - Win32 Debug"
68,7 → 68,7
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /GX /ZI /Od /I "..\..\src\domain\groundMotion" /I "..\..\src\domain\load" /I "..\..\src\domain\pattern" /I "..\..\src\element" /I "..\..\src\element\truss" /I "..\..\src\graph\graph" /I "..\..\src\graph\numberer" /I "..\..\src\system_of_eqn" /I "..\..\src\system_of_eqn\linearSOE" /I "..\..\src\system_of_eqn\linearSOE\sparseGen" /I "..\..\src\analysis\analysis" /I "..\..\src\convergenceTest" /I "..\..\src\analysis\integrator" /I "..\..\src\analysis\numberer" /I "..\..\src\domain\constraints" /I "..\..\src\analysis\handler" /I "..\..\src\analysis\algorithm" /I "..\..\src\analysis\model\simple" /I "..\..\src\matrix" /I "..\..\src" /I "..\..\src\actor\actor" /I "..\..\src\tagged" /I "..\..\src\domain\component" /I "..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\src\analysis\model" /I "..\..\src\domain\domain" /I "..\..\src\domain\node" /I "..\..\src\modelbuilder" /I "..\..\src\utility" /I "..\..\..\src\domain\groundMotion" /I "..\..\..\src\element\nonlinearBeamColumn\quadrule" /I "..\..\..\src\material\section\fiber" /I "..\..\..\src\element\fourNodeQuad" /I "..\..\..\src\element\nonlinearBeamColumn\element" /I "..\..\..\src\element\zeroLength" /I "..\..\..\src\element\beamWithHinges" /I "..\..\..\src\recorder\response" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\material\nD\template3Dep" /I "c:\Program Files\tcl" /D "_WIN32" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_TCL84" /FR /FD /GZ /c
# ADD CPP /nologo /W3 /GX /ZI /Od /I "..\..\src\domain\groundMotion" /I "..\..\src\domain\load" /I "..\..\src\domain\pattern" /I "..\..\src\element" /I "..\..\src\element\truss" /I "..\..\src\graph\graph" /I "..\..\src\graph\numberer" /I "..\..\src\system_of_eqn" /I "..\..\src\system_of_eqn\linearSOE" /I "..\..\src\system_of_eqn\linearSOE\sparseGen" /I "..\..\src\analysis\analysis" /I "..\..\src\convergenceTest" /I "..\..\src\analysis\integrator" /I "..\..\src\analysis\numberer" /I "..\..\src\domain\constraints" /I "..\..\src\analysis\handler" /I "..\..\src\analysis\algorithm" /I "..\..\src\analysis\model\simple" /I "..\..\src\matrix" /I "..\..\src" /I "..\..\src\actor\actor" /I "..\..\src\tagged" /I "..\..\src\domain\component" /I "..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\src\analysis\model" /I "..\..\src\domain\domain" /I "..\..\src\domain\node" /I "..\..\src\modelbuilder" /I "..\..\src\utility" /I "..\..\..\src\ndarray" /I "..\..\..\src\domain\groundMotion" /I "..\..\..\src\element\nonlinearBeamColumn\quadrule" /I "..\..\..\src\material\section\fiber" /I "..\..\..\src\element\fourNodeQuad" /I "..\..\..\src\element\nonlinearBeamColumn\element" /I "..\..\..\src\element\zeroLength" /I "..\..\..\src\element\beamWithHinges" /I "..\..\..\src\recorder\response" /I "..\..\..\src\coordTransformation" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\analysis\algorithm\equiSolnAlgo" /I "..\..\..\src\system_of_eqn\eigenSOE" /I "..\..\..\src\analysis\algorithm\eigenAlgo" /I "..\..\..\src\material\nD" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\handler" /I "..\..\..\src\tcl" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\system_of_eqn\linearSOE\umfGEN" /I "..\..\..\src\system_of_eqn\linearSOE\fullGEN" /I "..\..\..\src\system_of_eqn\linearSOE\sparseGEN" /I "..\..\..\src\system_of_eqn\linearSOE\bandSPD" /I "..\..\..\src\system_of_eqn\linearSOE\bandGEN" /I "..\..\..\src\element\nonlinearBeamColumn\tcl\repres\section" /I "..\..\..\src\matrix" /I "..\..\..\src\recorder" /I "..\..\..\src\graph\numberer" /I "..\..\..\src\material\section" /I "..\..\..\src\graph\graph" /I "..\..\..\src\element\beam2d" /I "..\..\..\src\element\beam3d" /I "..\..\..\src\system_of_eqn" /I "..\..\..\src\system_of_eqn\linearSOE" /I "..\..\..\src\system_of_eqn\linearSOE\profileSPD" /I "..\..\..\src\system_of_eqn\linearSOE\sparseSYM" /I "..\..\..\src\domain\pattern" /I "..\..\..\src\analysis\analysis" /I "..\..\..\src\analysis\integrator" /I "..\..\..\src\analysis\numberer" /I "..\..\..\src\analysis\handler" /I "..\..\..\src\renderer" /I "..\..\..\src\material" /I "..\..\..\src\analysis\algorithm" /I "..\..\..\src\convergenceTest" /I "..\..\..\src\analysis\model\simple" /I "..\..\..\src\domain\load" /I "..\..\..\src\analysis\model" /I "..\..\..\src\element\truss" /I "..\..\..\src\actor\channel" /I "..\..\..\src\utility" /I "..\..\..\src\actor\actor" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\domain\constraints" /I "..\..\..\src\domain\component" /I "..\..\..\src\element" /I "..\..\..\src\domain\node" /I "..\..\..\src\domain\domain" /I "..\..\..\src\tagged\storage" /I "..\..\..\src" /I "..\..\..\src\tagged" /I "..\..\..\src\material\nD\template3Dep" /I "c:\Program Files\tcl" /D "_WIN32" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_TCL84" /FR /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
77,7 → 77,7
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib nonlinearBeamColumn.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib tcl83.lib tk83.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib OpenGL32.lib glu32.lib GlAux.lib /nologo /subsystem:console /profile /debug /machine:I386 /nodefaultlib:"libc.lib" /libpath:"c:\msdev\lib" /libpath:"c:\Program Files\tcl\lib" /libpath:"..\..\lib" /libpath:"..\..\lib\debug" /FORCE:MULTIPLE
# ADD LINK32 reliability.lib actor.lib analysis.lib cblas.lib convergence.lib domain.lib element.lib graph.lib material.lib matrix.lib modelbuilder.lib recorder.lib superLU.lib system.lib tagged.lib utility.lib database.lib renderer.lib blas.lib lapack.lib feap.lib arpack.lib umfpack.lib openSeesFortran.lib tcl83.lib tk83.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib OpenGL32.lib glu32.lib GlAux.lib /nologo /subsystem:console /profile /debug /machine:I386 /nodefaultlib:"libc.lib" /libpath:"c:\msdev\lib" /libpath:"c:\Program Files\tcl\lib" /libpath:"..\..\lib" /libpath:"..\..\lib\debug" /FORCE:MULTIPLE
 
!ENDIF
 
/trunk/Win32/proj/element/element.vcproj
393,16 → 393,31
RelativePath="..\..\..\SRC\element\20nbrick\TclTwentyNodeBrickCommand.cpp">
</File>
<File
RelativePath="..\..\..\SRC\element\20nbrick\TclTwenty_Node_BrickCommand.cpp">
</File>
<File
RelativePath="..\..\..\SRC\element\20nbrick\TwentyNodeBrick.cpp">
</File>
<File
RelativePath="..\..\..\SRC\element\20nbrick\TwentyNodeBrick.h">
</File>
<File
RelativePath="..\..\..\SRC\element\20nbrick\Twenty_Node_Brick.cpp">
</File>
<File
RelativePath="..\..\..\SRC\element\20nbrick\Twenty_Node_Brick.h">
</File>
</Filter>
<Filter
Name="upU"
Filter="">
<File
RelativePath="..\..\..\SRC\element\upU\BrickUP.cpp">
</File>
<File
RelativePath="..\..\..\SRC\element\upU\BrickUP.h">
</File>
<File
RelativePath="..\..\..\Src\element\upU\EightNodeBrick_u_p_U.cpp">
</File>
<File
415,6 → 430,12
RelativePath="..\..\..\Src\element\upU\FourNodeQuadUP.h">
</File>
<File
RelativePath="..\..\..\SRC\element\upU\Nine_Four_Node_QuadUP.cpp">
</File>
<File
RelativePath="..\..\..\SRC\element\upU\Nine_Four_Node_QuadUP.h">
</File>
<File
RelativePath="..\..\..\SRC\element\upU\TclEightNodeBrick_u_p_U.cpp">
</File>
<File
429,6 → 450,18
<File
RelativePath="..\..\..\Src\element\upU\TwentyNodeBrick_u_p_U.h">
</File>
<File
RelativePath="..\..\..\SRC\element\upU\Twenty_Eight_Node_BrickUP.cpp">
</File>
<File
RelativePath="..\..\..\SRC\element\upU\Twenty_Eight_Node_BrickUP.h">
</File>
<File
RelativePath="..\..\..\SRC\element\upU\shp3dv.cpp">
</File>
<File
RelativePath="..\..\..\SRC\element\upU\shp3dv.h">
</File>
</Filter>
<Filter
Name="joint"
/trunk/Win32/proj/element/element.dsp
451,10 → 451,22
# PROP Default_Filter ""
# Begin Source File
 
SOURCE=..\..\..\SRC\element\20nbrick\TclTwenty_Node_BrickCommand.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\20nbrick\TclTwentyNodeBrickCommand.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\20nbrick\Twenty_Node_Brick.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\20nbrick\Twenty_Node_Brick.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\20nbrick\TwentyNodeBrick.cpp
# End Source File
# Begin Source File
467,6 → 479,14
# PROP Default_Filter ""
# Begin Source File
 
SOURCE=..\..\..\SRC\element\upU\BrickUP.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\upU\BrickUP.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\Src\element\upU\EightNodeBrick_u_p_U.cpp
# End Source File
# Begin Source File
483,6 → 503,18
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\upU\Nine_Four_Node_QuadUP.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\upU\Nine_Four_Node_QuadUP.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\upU\shp3dv.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\upU\TclEightNodeBrick_u_p_U.cpp
# End Source File
# Begin Source File
495,6 → 527,14
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\upU\Twenty_Eight_Node_BrickUP.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\element\upU\Twenty_Eight_Node_BrickUP.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\Src\element\upU\TwentyNodeBrick_u_p_U.cpp
# End Source File
# Begin Source File
/trunk/Win32/proj/material/material.vcproj
21,7 → 21,7
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\src\material\nd\finitedeformation;..\..\..\src\element\fournodequad;..\..\..\src\material\uniaxial\fedeas;..\..\..\src\material\uniaxial\drain;..\..\..\src\domain\domain;..\..\..\src\renderer;..\..\..\src\material\nD\soil;..\..\..\src\material\nD\template3dep;..\..\..\src\recorder\response;..\..\..\src\material\backbone;..\..\..\src\material\state;..\..\..\src\material\state\strength;..\..\..\src\material\state\deformation;..\..\..\src\material\state\stiffness;..\..\..\src\material\section\repres\section;..\..\..\src\material\section\repres\cell;..\..\..\src\material\section\repres\patch;..\..\..\src\material\section\repres\reinfBar;..\..\..\src\material\section\repres\reinfLayer;..\..\..\src\material\section\fiber;..\..\..\src\element\nonlinearBeamColumn\fiber;..\..\..\src\element\nonlinearBeamColumn\matrixutil;..\..\..\src\material\section;..\..\..\src\handler;..\..\..\src\material\uniaxial;..\..\..\src\material\nD;..\..\..\src\element;..\..\..\src\actor\channel;..\..\..\src\actor\objectBroker;..\..\..\src\matrix;..\..\..\src;..\..\..\src\actor\actor;..\..\..\src\tagged;..\..\..\src\modelbuilder;..\..\..\src\domain\component;..\..\..\src\material;..\..\..\src\modelbuilder\tcl;..\..\..\src\material\nd\template3dep;..\..\..\src\nDarray;..\..\..\src\material\uniaxial\py;..\..\..\src\material\uniaxial\snap;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\material\section\yieldSurface;..\..\..\src\material\nd\feap;&quot;c:\Program Files\tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
AdditionalIncludeDirectories="..\..\..\src\material\nd\FiniteDeformation\fdEvolution;..\..\..\src\material\nd\FiniteDeformation\fdFlow;..\..\..\src\material\nd\FiniteDeformation\fdYield;..\..\..\src\material\nd\finitedeformation;..\..\..\src\element\fournodequad;..\..\..\src\material\uniaxial\fedeas;..\..\..\src\material\uniaxial\drain;..\..\..\src\domain\domain;..\..\..\src\renderer;..\..\..\src\material\nD\soil;..\..\..\src\material\nD\template3dep;..\..\..\src\recorder\response;..\..\..\src\material\backbone;..\..\..\src\material\state;..\..\..\src\material\state\strength;..\..\..\src\material\state\deformation;..\..\..\src\material\state\stiffness;..\..\..\src\material\section\repres\section;..\..\..\src\material\section\repres\cell;..\..\..\src\material\section\repres\patch;..\..\..\src\material\section\repres\reinfBar;..\..\..\src\material\section\repres\reinfLayer;..\..\..\src\material\section\fiber;..\..\..\src\element\nonlinearBeamColumn\fiber;..\..\..\src\element\nonlinearBeamColumn\matrixutil;..\..\..\src\material\section;..\..\..\src\handler;..\..\..\src\material\uniaxial;..\..\..\src\material\nD;..\..\..\src\element;..\..\..\src\actor\channel;..\..\..\src\actor\objectBroker;..\..\..\src\matrix;..\..\..\src;..\..\..\src\actor\actor;..\..\..\src\tagged;..\..\..\src\modelbuilder;..\..\..\src\domain\component;..\..\..\src\material;..\..\..\src\modelbuilder\tcl;..\..\..\src\material\nd\template3dep;..\..\..\src\nDarray;..\..\..\src\material\uniaxial\py;..\..\..\src\material\uniaxial\snap;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\material\section\yieldSurface;..\..\..\src\material\nd\feap;&quot;c:\Program Files\tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
PreprocessorDefinitions="WIN32,_DEBUG,_LIB,MHS_INSURE,_TCL84"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
66,7 → 66,7
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".;..\..\..\src\material\nd\finitedeformation;..\..\..\src\element\fournodequad;..\..\..\src\material\uniaxial\fedeas;..\..\..\src\material\uniaxial\drain;..\..\..\src\domain\domain;..\..\..\src\renderer;..\..\..\src\material\nD\soil;..\..\..\src\material\nD\template3dep;..\..\..\src\recorder\response;..\..\..\src\material\backbone;..\..\..\src\material\state;..\..\..\src\material\state\strength;..\..\..\src\material\state\deformation;..\..\..\src\material\state\stiffness;..\..\..\src\material\section\repres\section;..\..\..\src\material\section\repres\cell;..\..\..\src\material\section\repres\patch;..\..\..\src\material\section\repres\reinfBar;..\..\..\src\material\section\repres\reinfLayer;..\..\..\src\material\section\fiber;..\..\..\src\element\nonlinearBeamColumn\fiber;..\..\..\src\element\nonlinearBeamColumn\matrixutil;..\..\..\src\material\section;..\..\..\src\handler;..\..\..\src\material\uniaxial;..\..\..\src\material\nD;..\..\..\src\element;..\..\..\src\actor\channel;..\..\..\src\actor\objectBroker;..\..\..\src\matrix;..\..\..\src;..\..\..\src\actor\actor;..\..\..\src\tagged;..\..\..\src\modelbuilder;..\..\..\src\domain\component;..\..\..\src\material;..\..\..\src\modelbuilder\tcl;..\..\..\src\material\nd\template3dep;..\..\..\src\nDarray;..\..\..\src\material\uniaxial\py;..\..\..\src\material\uniaxial\snap;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\material\section\yieldSurface;..\..\..\src\material\nd\feap;&quot;c:\Program Files\tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
AdditionalIncludeDirectories="..\..\..\src\material\nd\FiniteDeformation\fdEvolution;..\..\..\src\material\nd\FiniteDeformation\fdFlow;..\..\..\src\material\nd\FiniteDeformation\fdYield;..\..\..\src\material\nd\finitedeformation;..\..\..\src\element\fournodequad;..\..\..\src\material\uniaxial\fedeas;..\..\..\src\material\uniaxial\drain;..\..\..\src\domain\domain;..\..\..\src\renderer;..\..\..\src\material\nD\soil;..\..\..\src\material\nD\template3dep;..\..\..\src\recorder\response;..\..\..\src\material\backbone;..\..\..\src\material\state;..\..\..\src\material\state\strength;..\..\..\src\material\state\deformation;..\..\..\src\material\state\stiffness;..\..\..\src\material\section\repres\section;..\..\..\src\material\section\repres\cell;..\..\..\src\material\section\repres\patch;..\..\..\src\material\section\repres\reinfBar;..\..\..\src\material\section\repres\reinfLayer;..\..\..\src\material\section\fiber;..\..\..\src\element\nonlinearBeamColumn\fiber;..\..\..\src\element\nonlinearBeamColumn\matrixutil;..\..\..\src\material\section;..\..\..\src\handler;..\..\..\src\material\uniaxial;..\..\..\src\material\nD;..\..\..\src\element;..\..\..\src\actor\channel;..\..\..\src\actor\objectBroker;..\..\..\src\matrix;..\..\..\src;..\..\..\src\actor\actor;..\..\..\src\tagged;..\..\..\src\modelbuilder;..\..\..\src\domain\component;..\..\..\src\material;..\..\..\src\modelbuilder\tcl;..\..\..\src\material\nd\template3dep;..\..\..\src\nDarray;..\..\..\src\material\uniaxial\py;..\..\..\src\material\uniaxial\snap;..\..\..\src\material\yieldSurface\yieldSurfaceBC;..\..\..\src\material\yieldSurface\evolution;..\..\..\src\material\yieldSurface\plasticHardeningMaterial;..\..\..\src\material\section\yieldSurface;..\..\..\src\material\nd\feap;&quot;c:\Program Files\tcl\include&quot;;&quot;c:\Program Files\tcl&quot;"
PreprocessorDefinitions="WIN32,NDEBUG,_LIB,_TCL84"
StringPooling="TRUE"
RuntimeLibrary="5"
359,6 → 359,12
RelativePath="..\..\..\Src\material\uniaxial\Py\PySimple1.h">
</File>
<File
RelativePath="..\..\..\SRC\material\uniaxial\PY\PySimple1Gen.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\uniaxial\PY\PySimple1Gen.h">
</File>
<File
RelativePath="..\..\..\Src\material\uniaxial\Py\QzSimple1.cpp">
</File>
<File
379,6 → 385,12
<File
RelativePath="..\..\..\Src\material\uniaxial\Py\TzSimple1.h">
</File>
<File
RelativePath="..\..\..\SRC\material\uniaxial\PY\TzSimple1Gen.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\uniaxial\PY\TzSimple1Gen.h">
</File>
</Filter>
<Filter
Name="snap"
526,6 → 538,12
RelativePath="..\..\..\SRC\material\nD\soil\PressureDependMultiYield.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\soil\PressureDependMultiYield02.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\soil\PressureDependMultiYield02.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\soil\PressureIndependMultiYield.cpp">
</File>
<File
761,6 → 779,24
Name="finitedeformation"
Filter="">
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\FDEPState.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\FDEPState.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\FDdecoupledElastic3D.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\FDdecoupledElastic3D.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\FiniteDeformationEP3D.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\FiniteDeformationEP3D.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\FiniteDeformationElastic3D.cpp">
</File>
<File
785,6 → 821,12
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\MooneyRivlinWEnergy.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\NeoHookeanCompressible3D.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\NeoHookeanCompressible3D.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\NeoHookeanWEnergy.cpp">
</File>
<File
809,6 → 851,9
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\SimoPisterWEnergy.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\TclFiniteDeformationEP3DCommand.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\TclFiniteDeformationElastic3DCommand.cpp">
</File>
<File
817,6 → 862,66
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\W.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_S.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_S.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_SLS.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_SLS.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_T.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_T.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_TL.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_TL.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlow.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlow.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlowDP.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlowDP.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlowVM.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlowVM.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYield.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYield.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYieldDP.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYieldDP.h">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYieldVM.cpp">
</File>
<File
RelativePath="..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYieldVM.h">
</File>
</Filter>
</Filter>
<Filter
/trunk/Win32/proj/material/material.dsp
41,7 → 41,7
# PROP Intermediate_Dir "..\..\obj\material\release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD CPP /nologo /MLd /W3 /GX /O2 /I "." /I "..\..\..\src\material\nd\finitedeformation" /I "..\..\..\src\element\fournodequad" /I "..\..\..\src\material\uniaxial\fedeas" /I "..\..\..\src\material\uniaxial\drain" /I "..\..\..\src\domain\domain" /I "..\..\..\src\renderer" /I "..\..\..\src\material\nD\soil" /I "..\..\..\src\material\nD\template3dep" /I "..\..\..\src\recorder\response" /I "..\..\..\src\material\backbone" /I "..\..\..\src\material\state" /I "..\..\..\src\material\state\strength" /I "..\..\..\src\material\state\deformation" /I "..\..\..\src\material\state\stiffness" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\material\section\repres\cell" /I "..\..\..\src\material\section\repres\patch" /I "..\..\..\src\material\section\repres\reinfBar" /I "..\..\..\src\material\section\repres\reinfLayer" /I "..\..\..\src\material\section\fiber" /I "..\..\..\src\element\nonlinearBeamColumn\fiber" /I "..\..\..\src\element\nonlinearBeamColumn\matrixutil" /I "..\..\..\src\material\section" /I "..\..\..\src\handler" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\material\nD" /I "..\..\..\src\element" /I "..\..\..\src\actor\channel" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\matrix" /I "..\..\..\src" /I "..\..\..\src\actor\actor" /I "..\..\..\src\tagged" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\domain\component" /I "..\..\..\src\material" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\material\nd\template3dep" /I "..\..\..\src\nDarray" /I "..\..\..\src\material\uniaxial\py" /I "..\..\..\src\material\uniaxial\snap" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\material\section\yieldSurface" /I "..\..\..\src\material\nd\feap" /I "c:\Program Files\tcl" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /D "_TCL84" /FD /c
# ADD CPP /nologo /MLd /W3 /GX /O2 /I "." /I "..\..\..\src\material\nd\finitedeformation\fdevolution" /I "..\..\..\src\material\nd\finitedeformation\fdflow" /I "..\..\..\src\material\nd\finitedeformation\fdYield" /I "..\..\..\src\material\nd\finitedeformation" /I "..\..\..\src\element\fournodequad" /I "..\..\..\src\material\uniaxial\fedeas" /I "..\..\..\src\material\uniaxial\drain" /I "..\..\..\src\domain\domain" /I "..\..\..\src\renderer" /I "..\..\..\src\material\nD\soil" /I "..\..\..\src\material\nD\template3dep" /I "..\..\..\src\recorder\response" /I "..\..\..\src\material\backbone" /I "..\..\..\src\material\state" /I "..\..\..\src\material\state\strength" /I "..\..\..\src\material\state\deformation" /I "..\..\..\src\material\state\stiffness" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\material\section\repres\cell" /I "..\..\..\src\material\section\repres\patch" /I "..\..\..\src\material\section\repres\reinfBar" /I "..\..\..\src\material\section\repres\reinfLayer" /I "..\..\..\src\material\section\fiber" /I "..\..\..\src\element\nonlinearBeamColumn\fiber" /I "..\..\..\src\element\nonlinearBeamColumn\matrixutil" /I "..\..\..\src\material\section" /I "..\..\..\src\handler" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\material\nD" /I "..\..\..\src\element" /I "..\..\..\src\actor\channel" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\matrix" /I "..\..\..\src" /I "..\..\..\src\actor\actor" /I "..\..\..\src\tagged" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\domain\component" /I "..\..\..\src\material" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\material\nd\template3dep" /I "..\..\..\src\nDarray" /I "..\..\..\src\material\uniaxial\py" /I "..\..\..\src\material\uniaxial\snap" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\material\section\yieldSurface" /I "..\..\..\src\material\nd\feap" /I "c:\Program Files\tcl" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /D "_TCL84" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
65,7 → 65,7
# PROP Intermediate_Dir "..\..\obj\material\debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /GX /ZI /Od /I "..\..\..\src\material\nd\finitedeformation" /I "..\..\..\src\element\fournodequad" /I "..\..\..\src\material\uniaxial\fedeas" /I "..\..\..\src\material\uniaxial\drain" /I "..\..\..\src\domain\domain" /I "..\..\..\src\renderer" /I "..\..\..\src\material\nD\soil" /I "..\..\..\src\material\nD\template3dep" /I "..\..\..\src\recorder\response" /I "..\..\..\src\material\backbone" /I "..\..\..\src\material\state" /I "..\..\..\src\material\state\strength" /I "..\..\..\src\material\state\deformation" /I "..\..\..\src\material\state\stiffness" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\material\section\repres\cell" /I "..\..\..\src\material\section\repres\patch" /I "..\..\..\src\material\section\repres\reinfBar" /I "..\..\..\src\material\section\repres\reinfLayer" /I "..\..\..\src\material\section\fiber" /I "..\..\..\src\element\nonlinearBeamColumn\fiber" /I "..\..\..\src\element\nonlinearBeamColumn\matrixutil" /I "..\..\..\src\material\section" /I "..\..\..\src\handler" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\material\nD" /I "..\..\..\src\element" /I "..\..\..\src\actor\channel" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\matrix" /I "..\..\..\src" /I "..\..\..\src\actor\actor" /I "..\..\..\src\tagged" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\domain\component" /I "..\..\..\src\material" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\material\nd\template3dep" /I "..\..\..\src\nDarray" /I "..\..\..\src\material\uniaxial\py" /I "..\..\..\src\material\uniaxial\snap" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\material\section\yieldSurface" /I "..\..\..\src\material\nd\feap" /I "c:\Program Files\tcl" /D "WIN32" /D "_DEBUG" /D "_LIB" /D "MHS_INSURE" /D "_MBCS" /D "_TCL84" /FR /FD /GZ /c
# ADD CPP /nologo /W3 /GX /ZI /Od /I "..\..\..\src\material\nd\finitedeformation\fdevolution" /I "..\..\..\src\material\nd\finitedeformation\fdflow" /I "..\..\..\src\material\nd\finitedeformation\fdYield" /I "..\..\..\src\material\nd\finitedeformation" /I "..\..\..\src\element\fournodequad" /I "..\..\..\src\material\uniaxial\fedeas" /I "..\..\..\src\material\uniaxial\drain" /I "..\..\..\src\domain\domain" /I "..\..\..\src\renderer" /I "..\..\..\src\material\nD\soil" /I "..\..\..\src\material\nD\template3dep" /I "..\..\..\src\recorder\response" /I "..\..\..\src\material\backbone" /I "..\..\..\src\material\state" /I "..\..\..\src\material\state\strength" /I "..\..\..\src\material\state\deformation" /I "..\..\..\src\material\state\stiffness" /I "..\..\..\src\material\section\repres\section" /I "..\..\..\src\material\section\repres\cell" /I "..\..\..\src\material\section\repres\patch" /I "..\..\..\src\material\section\repres\reinfBar" /I "..\..\..\src\material\section\repres\reinfLayer" /I "..\..\..\src\material\section\fiber" /I "..\..\..\src\element\nonlinearBeamColumn\fiber" /I "..\..\..\src\element\nonlinearBeamColumn\matrixutil" /I "..\..\..\src\material\section" /I "..\..\..\src\handler" /I "..\..\..\src\material\uniaxial" /I "..\..\..\src\material\nD" /I "..\..\..\src\element" /I "..\..\..\src\actor\channel" /I "..\..\..\src\actor\objectBroker" /I "..\..\..\src\matrix" /I "..\..\..\src" /I "..\..\..\src\actor\actor" /I "..\..\..\src\tagged" /I "..\..\..\src\modelbuilder" /I "..\..\..\src\domain\component" /I "..\..\..\src\material" /I "..\..\..\src\modelbuilder\tcl" /I "..\..\..\src\material\nd\template3dep" /I "..\..\..\src\nDarray" /I "..\..\..\src\material\uniaxial\py" /I "..\..\..\src\material\uniaxial\snap" /I "..\..\..\src\material\yieldSurface\yieldSurfaceBC" /I "..\..\..\src\material\yieldSurface\evolution" /I "..\..\..\src\material\yieldSurface\plasticHardeningMaterial" /I "..\..\..\src\material\section\yieldSurface" /I "..\..\..\src\material\nd\feap" /I "c:\Program Files\tcl" /D "WIN32" /D "_DEBUG" /D "_LIB" /D "MHS_INSURE" /D "_MBCS" /D "_TCL84" /FR /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
242,6 → 242,14
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\uniaxial\PY\PySimple1Gen.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\uniaxial\PY\PySimple1Gen.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\Src\material\uniaxial\Py\QzSimple1.cpp
# End Source File
# Begin Source File
268,6 → 276,14
 
SOURCE=..\..\..\Src\material\uniaxial\Py\TzSimple1.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\uniaxial\PY\TzSimple1Gen.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\uniaxial\PY\TzSimple1Gen.h
# End Source File
# End Group
# Begin Group "snap"
 
626,6 → 642,14
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\soil\PressureDependMultiYield02.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\soil\PressureDependMultiYield02.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\soil\PressureIndependMultiYield.cpp
# End Source File
# Begin Source File
932,8 → 956,116
# Begin Group "finitedeformation"
 
# PROP Default_Filter ""
# Begin Group "fdflow"
 
# PROP Default_Filter ""
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlow.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlow.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlowDP.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlowDP.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlowVM.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdFlow\fdFlowVM.h
# End Source File
# End Group
# Begin Group "fdyield"
 
# PROP Default_Filter ""
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYield.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYield.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYieldDP.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYieldDP.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYieldVM.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdYield\fdYieldVM.h
# End Source File
# End Group
# Begin Group "fdevolution"
 
# PROP Default_Filter ""
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_S.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_S.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_SLS.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_SLS.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_T.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_T.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_TL.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\fdEvolution\fdEvolution_TL.h
# End Source File
# End Group
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\FDdecoupledElastic3D.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\FDdecoupledElastic3D.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\FDEPState.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\FDEPState.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\FiniteDeformationElastic3D.cpp
# End Source File
# Begin Source File
942,6 → 1074,14
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\FiniteDeformationEP3D.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\FiniteDeformationEP3D.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\LogWEnergy.cpp
# End Source File
# Begin Source File
966,6 → 1106,14
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\NeoHookeanCompressible3D.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\NeoHookeanCompressible3D.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\NeoHookeanWEnergy.cpp
# End Source File
# Begin Source File
1002,6 → 1150,10
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\TclFiniteDeformationEP3DCommand.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\material\nD\FiniteDeformation\W.cpp
# End Source File
# Begin Source File
/trunk/Win32/proj/database/database.vcproj
111,6 → 111,9
RelativePath="..\..\..\SRC\database\FileDatastore.cpp">
</File>
<File
RelativePath="..\..\..\SRC\database\NEESData.cpp">
</File>
<File
RelativePath="..\..\..\SRC\database\TclDatabaseCommands.cpp">
</File>
</Filter>
123,6 → 126,9
<File
RelativePath="..\..\..\SRC\database\FileDatastore.h">
</File>
<File
RelativePath="..\..\..\SRC\database\NEESData.h">
</File>
</Filter>
</Files>
<Globals>
/trunk/Win32/proj/database/database.dsp
95,6 → 95,10
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\database\NEESData.cpp
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\database\TclDatabaseCommands.cpp
# End Source File
# End Group
109,6 → 113,10
 
SOURCE=..\..\..\SRC\database\FileDatastore.h
# End Source File
# Begin Source File
 
SOURCE=..\..\..\SRC\database\NEESData.h
# End Source File
# End Group
# End Target
# End Project
/trunk/SRC/element/TclElementCommands.cpp
18,8 → 18,8
** **
** ****************************************************************** */
// $Revision: 1.34 $
// $Date: 2003-11-25 23:49:18 $
// $Revision: 1.35 $
// $Date: 2004-07-22 18:34:41 $
// $Source: /usr/local/cvs/OpenSees/SRC/element/TclElementCommands.cpp,v $
// Written: fmk
205,6 → 205,24
TclModelBuilder_addFourNodeQuadUP(ClientData, Tcl_Interp *, int, TCL_Char **,
Domain*, TclModelBuilder *);
 
// Zhaohui Yang
extern int
TclModelBuilder_addBrickUP(ClientData, Tcl_Interp *, int, TCL_Char **,
Domain*, TclModelBuilder *);
 
// Zhaohui Yang
extern int
TclModelBuilder_addNineFourNodeQuadUP(ClientData, Tcl_Interp *, int, TCL_Char **,
Domain*, TclModelBuilder *);
// Jinchi Lu
extern int
TclModelBuilder_addTwentyEightNodeBrickUP(ClientData, Tcl_Interp *, int, TCL_Char **,
Domain*, TclModelBuilder *);
// Jinchi Lu
extern int
TclModelBuilder_addTwentyNodeBrick(ClientData, Tcl_Interp *, int, TCL_Char **,
Domain*, TclModelBuilder *);
 
// Boris Jeremic and Zhao Cheng
extern int
TclModelBuilder_addTLFD20nBrick(ClientData, Tcl_Interp *, int, TCL_Char **,
286,6 → 304,22
int result = TclModelBuilder_addFourNodeQuadUP(clientData, interp, argc, argv,
theTclDomain, theTclBuilder);
return result;
} else if (strcmp(argv[1],"brickUP") == 0) {
int result = TclModelBuilder_addBrickUP(clientData, interp, argc, argv,
theTclDomain, theTclBuilder);
return result;
} else if (strcmp(argv[1],"9_4_QuadUP") == 0) {
int result = TclModelBuilder_addNineFourNodeQuadUP(clientData, interp, argc, argv,
theTclDomain, theTclBuilder);
return result;
} else if (strcmp(argv[1],"20_8_BrickUP") == 0) {
int result = TclModelBuilder_addTwentyEightNodeBrickUP(clientData, interp, argc, argv,
theTclDomain, theTclBuilder);
return result;
} else if (strcmp(argv[1],"20NodeBrick") == 0) {
int result = TclModelBuilder_addTwentyNodeBrick(clientData, interp, argc, argv,
theTclDomain, theTclBuilder);
return result;
} else if ((strcmp(argv[1],"shell") == 0) || (strcmp(argv[1],"shellMITC4") == 0) ||
(strcmp(argv[1],"Shell") == 0) || (strcmp(argv[1],"ShellMITC4") == 0)) {
 
/trunk/SRC/element/TotalLagrangianFD20NodeBrick/TotalLagrangianFD20NodeBrick.cpp
20,27 → 20,14
//#
//#
//# DATE: Sept2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004, Zhao put all Ks & Rs in the integration cycle and
//# and use minor symmetries to make concise and efficient
//#
//#
//===============================================================================
#ifndef TOTALLAGRANGIANFD20NODEBRICK_CPP
#define TOTALLAGRANGIANFD20NODEBRICK_CPP
 
//#include <FiniteDeformationElastic3D.h>
#include <Matrix.h>
#include <Vector.h>
#include <ID.h>
#include <Renderer.h>
#include <Domain.h>
#include <string.h>
#include <Information.h>
#include <Channel.h>
#include <FEM_ObjectBroker.h>
#include <ErrorHandler.h>
#include <ElementResponse.h>
#include <ElementalLoad.h>
 
#include <TotalLagrangianFD20NodeBrick.h>
 
#define NumIntegrationPts 3
337,6 → 324,7
{
int ret = 0;
tensor dh;
tensor dH_dX;
int where;
double r = 0.0;
double s = 0.0;
347,7 → 335,6
 
tensor InitialNodesCrds = this->getNodesCrds();
tensor CurrentNodesDisp = this->getNodesDisp();
// CurrentNodesDisp.print("U","\n");
 
for( short GP_c_r = 0 ; GP_c_r < NumIntegrationPts ; GP_c_r++ )
{
360,12 → 347,10
t = pts[GP_c_t ];
where =(GP_c_r * NumIntegrationPts + GP_c_s) * NumIntegrationPts + GP_c_t;
dh = shapeFunctionDerivative(r,s,t);
tensor dH_dX = this->dh_Global(dh);
tensor currentF = CurrentNodesDisp("Ia") * dH_dX("Ib");
currentF.null_indices(); CurrentNodesDisp.null_indices(); dH_dX.null_indices();
updatedF = currentF + I_ij;
// if (where == 1)
// updatedF.print("F","\n");
dH_dX = this->dh_Global(dh);
currentF = CurrentNodesDisp("Ia") * dH_dX("Ib");
currentF.null_indices(); //CurrentNodesDisp.null_indices(); dH_dX.null_indices();
updatedF = currentF + I_ij;
ret += theMaterial[where]->setTrialF(updatedF);
}
}
378,7 → 363,7
{
tensor N_C = this->getNodesCrds();
tensor J3D = dh("ij") * N_C("ik");
J3D.null_indices(); dh.null_indices(); N_C.null_indices();
J3D.null_indices(); //dh.null_indices(); N_C.null_indices();
return J3D;
}
 
387,7 → 372,7
{
tensor N_C = this->getNodesCrds();
tensor J3D = dh("ij") * N_C("ik");
J3D.null_indices(); dh.null_indices(); N_C.null_indices();
J3D.null_indices(); //dh.null_indices(); N_C.null_indices();
tensor J3Dinv = J3D.inverse();
return J3Dinv;
}
397,14 → 382,16
{
tensor JacobianINV0 = this->Jacobian_3Dinv(dh);
tensor dhGlobal_0 = dh("ij") * JacobianINV0("kj");
dhGlobal_0.null_indices(); dh.null_indices(); JacobianINV0.null_indices();
dhGlobal_0.null_indices(); //dh.null_indices(); JacobianINV0.null_indices();
return dhGlobal_0;
}
 
//======================================================================
tensor TotalLagrangianFD20NodeBrick::getStiffnessTensor01(void)
tensor TotalLagrangianFD20NodeBrick::getStiffnessTensor(void)
{
int K_dim[] = {NumNodes,NumDof,NumDof,NumNodes};
tensor tI2("I", 2, def_dim_2);
int K_dim[] = {NumNodes,NumDof,NumDof,NumNodes};
tensor Kk(4,K_dim,0.0);
 
double r = 0.0;
419,151 → 406,19
 
int dh_dim[] = {NumNodes,NumDof};
tensor dh(2, dh_dim, 0.0);
 
stresstensor PK2Stress;
tensor L2;
 
double det_of_Jacobian = 0.0;
 
tensor Jacobian;
tensor JacobianINV;
tensor dhGlobal;
tensor currentF;
tensor temp01;
tensor temp02;
 
for( short GP_c_r = 0 ; GP_c_r < NumIntegrationPts ; GP_c_r++ )
{
r = pts[GP_c_r ];
rw = wts[GP_c_r ];
for( short GP_c_s = 0 ; GP_c_s < NumIntegrationPts ; GP_c_s++ )
{
s = pts[GP_c_s ];
sw = wts[GP_c_s ];
for( short GP_c_t = 0 ; GP_c_t < NumIntegrationPts ; GP_c_t++ )
{
t = pts[GP_c_t ];
tw = wts[GP_c_t ];
where =(GP_c_r * NumIntegrationPts + GP_c_s) * NumIntegrationPts + GP_c_t;
dh = shapeFunctionDerivative(r,s,t);
Jacobian = this->Jacobian_3D(dh);
det_of_Jacobian = Jacobian.determinant();
dhGlobal = this->dh_Global(dh);
weight = rw * sw * tw * det_of_Jacobian;
L2 = theMaterial[where]->getTangentTensor();
// if (where==1)
// L2.print("L2","\n");
temp01 = dhGlobal("Pj") * L2("ijkl");
temp01.null_indices(); dhGlobal.null_indices(); L2.null_indices();
temp02 = temp01("Pikl") * dhGlobal("Qk") * weight;
temp02.null_indices(); dhGlobal.null_indices(); temp01.null_indices();
Kk += temp02;
}
}
}
// exit (-1);
return Kk;
}
 
//======================================================================
tensor TotalLagrangianFD20NodeBrick::getStiffnessTensor02(void)
{
int K_dim[] = {NumNodes,NumDof,NumDof,NumNodes};
tensor Kk(4,K_dim,0.0);
 
double r = 0.0;
double rw = 0.0;
double s = 0.0;
double sw = 0.0;
double t = 0.0;
double tw = 0.0;
 
short where = 0;
double weight = 0.0;
 
int dh_dim[] = {NumNodes,NumDof};
tensor dh(2, dh_dim, 0.0);
 
tensor L2;
 
double det_of_Jacobian = 0.0;
 
tensor Jacobian;
tensor dhGlobal;
tensor currentF;
tensor nodesDisp;
tensor temp01;
tensor F;
//tensor temp01;
tensor temp02;
tensor temp03;
tensor temp04;
 
nodesDisp = this->getNodesDisp( );
// nodesDisp.print("U1","\n");
 
for( short GP_c_r = 0 ; GP_c_r < NumIntegrationPts ; GP_c_r++ )
{
r = pts[GP_c_r ];
rw = wts[GP_c_r ];
for( short GP_c_s = 0 ; GP_c_s < NumIntegrationPts ; GP_c_s++ )
{
s = pts[GP_c_s ];
sw = wts[GP_c_s ];
for( short GP_c_t = 0 ; GP_c_t < NumIntegrationPts ; GP_c_t++ )
{
t = pts[GP_c_t ];
tw = wts[GP_c_t ];
where =(GP_c_r * NumIntegrationPts + GP_c_s) * NumIntegrationPts + GP_c_t;
dh = shapeFunctionDerivative(r,s,t);
Jacobian = this->Jacobian_3D(dh);
det_of_Jacobian = Jacobian.determinant();
dhGlobal = this->dh_Global(dh) ;
temp01 = dhGlobal("nk") * nodesDisp("nm");
temp01.null_indices(); dhGlobal.null_indices(); nodesDisp.null_indices();
temp02 = temp01("km") * dhGlobal("Qm");
temp02.null_indices(); dhGlobal.null_indices(); temp01.null_indices();
weight = rw * sw * tw * det_of_Jacobian;
L2 = theMaterial[where]->getTangentTensor();
temp03 = dhGlobal("Pj") * L2("ijkl");
temp03.null_indices(); dhGlobal.null_indices(); L2.null_indices();
temp04 = temp03("Pikl") * temp02("kQ") * weight;
temp04.null_indices(); temp03.null_indices(); temp02.null_indices();
Kk += temp04;
}
}
}
return Kk;
}
 
//======================================================================
tensor TotalLagrangianFD20NodeBrick::getStiffnessTensor03(void)
{
int K_dim[] = {NumNodes,NumDof,NumDof,NumNodes};
tensor Kk(4,K_dim,0.0);
 
double r = 0.0;
double rw = 0.0;
double s = 0.0;
double sw = 0.0;
double t = 0.0;
double tw = 0.0;
 
short where = 0;
double weight = 0.0;
 
int dh_dim[] = {NumNodes,NumDof};
tensor dh(2, dh_dim, 0.0);
 
tensor L2;
 
double det_of_Jacobian = 0.0;
 
tensor Jacobian;
tensor dhGlobal;
tensor currentF;
tensor nodesDisp;
tensor temp01;
tensor temp02;
tensor temp03;
tensor temp04;
tensor temp04;
tensor temp05;
tensor temp06;
 
586,194 → 441,109
Jacobian = this->Jacobian_3D(dh);
det_of_Jacobian = Jacobian.determinant();
dhGlobal = this->dh_Global(dh);
temp01 = dhGlobal("mk") * nodesDisp("mx");
temp01.null_indices( ); dhGlobal.null_indices( ); nodesDisp.null_indices( );
temp02 = temp01("kx") * dhGlobal("Qx");
temp02.null_indices( ); dhGlobal.null_indices( ); temp01.null_indices( );
temp03 = dhGlobal("nk") * nodesDisp("ny");
temp03.null_indices( ); dhGlobal.null_indices( ); nodesDisp.null_indices( );
temp04 = dhGlobal("Py") * temp03("jy");
temp04.null_indices( ); temp03.null_indices( ); dhGlobal.null_indices( );
weight = rw * sw * tw * det_of_Jacobian;
PK2Stress = theMaterial[where]->getStressTensor();
L2 = theMaterial[where]->getTangentTensor();
temp05 = temp04("Pj") * L2("ijkl");
temp05.null_indices( ); temp02.null_indices( ); L2.null_indices( );
temp06 = temp05("Pikl") * temp02("kQ") * weight;
temp06.null_indices( ); temp05.null_indices( ); temp04.null_indices( );
F = theMaterial[where]->getF();
//K1
temp04 = dhGlobal("Pb") * tI2("mn");
temp04.null_indices(); //dhGlobal.null_indices(); tI2.null_indices();
temp02 = PK2Stress("bd") * dhGlobal("Qd");
temp02.null_indices(); //dhGlobal.null_indices(); PK2Stress.null_indices();
temp06 = temp04("Pbmn") * temp02("bQ") * weight;
temp06.null_indices(); //temp04.null_indices(); temp02.null_indices();
Kk += temp06;
}
}
}
return Kk;
}
//K2
temp03 = dhGlobal("Pb") * F("ma");
temp03.null_indices(); //dhGlobal.null_indices(); F.null_indices();
temp04 = F("nc") * L2("abcd");
temp04.null_indices(); //F.null_indices(); L2.null_indices();
temp05 = temp04("nabd") * dhGlobal("Qd");
temp05.null_indices(); //temp04.null_indices(); dhGlobal.null_indices();
temp06 = temp03("Pbma") * temp05("nabQ") * weight;
temp06.null_indices(); //temp03.null_indices(); temp05.null_indices();
Kk += temp06;
///*
// // K1
// temp01 = dhGlobal("Pj") * L2("ijkl");
// temp01.null_indices(); dhGlobal.null_indices(); L2.null_indices();
// temp05 = temp01("Pikl") * dhGlobal("Qk") * weight;
// temp05.null_indices(); dhGlobal.null_indices(); temp01.null_indices();
// Kk += temp05;
//
// // K2
// temp01 = dhGlobal("nk") * nodesDisp("nm");
// temp01.null_indices(); dhGlobal.null_indices(); nodesDisp.null_indices();
// temp02 = temp01("km") * dhGlobal("Qm");
// temp02.null_indices(); dhGlobal.null_indices(); temp01.null_indices();
// temp05 = dhGlobal("Pj") * L2("ijkl");
// temp05.null_indices(); dhGlobal.null_indices(); L2.null_indices();
// temp06 = temp05("Pikl") * temp02("kQ") * weight;
// temp06.null_indices(); temp05.null_indices(); temp02.null_indices();
// Kk += temp06;
//
//
// // K3
// temp01 = dhGlobal("mk") * nodesDisp("mx");
// temp01.null_indices( ); dhGlobal.null_indices( ); nodesDisp.null_indices( );
// temp02 = temp01("kx") * dhGlobal("Qx");
// temp02.null_indices( ); dhGlobal.null_indices( ); temp01.null_indices( );
// temp03 = dhGlobal("nk") * nodesDisp("ny");
// temp03.null_indices( ); dhGlobal.null_indices( ); nodesDisp.null_indices( );
// temp04 = dhGlobal("Py") * temp03("jy");
// temp04.null_indices( ); temp03.null_indices( ); dhGlobal.null_indices( );
// temp05 = temp04("Pj") * L2("ijkl");
// temp05.null_indices( ); temp04.null_indices( ); L2.null_indices( );
// temp06 = temp05("Pikl") * temp02("kQ") * weight;
// temp06.null_indices( ); temp05.null_indices( ); temp05.null_indices( );
// Kk += temp06;
//
// // K4
// temp01 = dhGlobal("mj") * nodesDisp("mx");
// temp01.null_indices(); dhGlobal.null_indices(); nodesDisp.null_indices();
// temp02 = dhGlobal("Px") * temp01("jx");
// temp02.null_indices(); dhGlobal.null_indices(); temp01.null_indices();
// temp05 = temp02("Pj") * L2("ijkl");
// temp05.null_indices(); temp02.null_indices(); L2.null_indices();
// temp06 = temp05("Pikl") * dhGlobal("Qk") * weight;
// temp06.null_indices(); dhGlobal.null_indices(); temp05.null_indices();
// Kk += temp06;
//
// // K5
// temp01 = dhGlobal("Qj") * PK2Stress("ij");
// temp01.null_indices(); dhGlobal.null_indices(); PK2Stress.null_indices();
// temp05 = dhGlobal("Pl") * temp01("Qi") * weight;
// temp05.null_indices( ); dhGlobal.null_indices(); temp01.null_indices();
// for ( int i=1 ; i<=NumNodes ; i++ ) {
// for ( int j=1 ; j<=NumNodes ; j++ ) {
// for ( int k=1 ; k<=NumDof ; k++ ) {
// for ( int l=1 ; l<=NumDof ; l++ ) {
// temp06.val(i,k,l,j) = temp05.cval(i,l,j,k);
// }
// }
// }
// }
// Kk += temp06;
//*/
 
//======================================================================
tensor TotalLagrangianFD20NodeBrick::getStiffnessTensor04(void)
{
int K_dim[] = {NumNodes,NumDof,NumDof,NumNodes};
tensor Kk(4,K_dim,0.0);
 
double r = 0.0;
double rw = 0.0;
double s = 0.0;
double sw = 0.0;
double t = 0.0;
double tw = 0.0;
 
short where = 0;
double weight = 0.0;
 
int dh_dim[] = {NumNodes,NumDof};
tensor dh(2, dh_dim, 0.0);
 
tensor L2;
 
double det_of_Jacobian = 0.0;
 
tensor Jacobian;
tensor dhGlobal;
tensor currentF;
tensor nodesDisp;
tensor temp01;
tensor temp02;
tensor temp03;
tensor temp04;
 
nodesDisp = this->getNodesDisp( );
 
for( short GP_c_r = 0 ; GP_c_r < NumIntegrationPts ; GP_c_r++ )
{
r = pts[GP_c_r ];
rw = wts[GP_c_r ];
for( short GP_c_s = 0 ; GP_c_s < NumIntegrationPts ; GP_c_s++ )
{
s = pts[GP_c_s ];
sw = wts[GP_c_s ];
for( short GP_c_t = 0 ; GP_c_t < NumIntegrationPts ; GP_c_t++ )
{
t = pts[GP_c_t ];
tw = wts[GP_c_t ];
where =(GP_c_r * NumIntegrationPts + GP_c_s) * NumIntegrationPts + GP_c_t;
dh = shapeFunctionDerivative(r,s,t);
Jacobian = this->Jacobian_3D(dh);
det_of_Jacobian = Jacobian.determinant();
dhGlobal = this->dh_Global(dh);
temp01 = dhGlobal("mj") * nodesDisp("mx");
temp01.null_indices(); dhGlobal.null_indices(); nodesDisp.null_indices();
temp02 = dhGlobal("Px") * temp01("jx");
temp02.null_indices(); dhGlobal.null_indices(); temp01.null_indices();
weight = rw * sw * tw * det_of_Jacobian;
L2 = theMaterial[where]->getTangentTensor();
temp03 = temp02("Pj") * L2("ijkl");
temp03.null_indices(); temp02.null_indices(); L2.null_indices();
temp04 = temp03("Pikl") * dhGlobal("Qk") * weight;
temp04.null_indices(); dhGlobal.null_indices(); temp03.null_indices();
Kk += temp04;
}
}
}
return Kk;
}
 
//======================================================================
tensor TotalLagrangianFD20NodeBrick::getStiffnessTensor05(void)
{
int K_dim[] = {NumNodes,NumDof,NumDof,NumNodes};
tensor Kk(4,K_dim,0.0);
 
double r = 0.0;
double rw = 0.0;
double s = 0.0;
double sw = 0.0;
double t = 0.0;
double tw = 0.0;
 
short where = 0;
double weight = 0.0;
 
int dh_dim[] = {NumNodes,NumDof};
tensor dh(2, dh_dim, 0.0);
 
double det_of_Jacobian = 0.0;
 
tensor Jacobian;
tensor dhGlobal;
tensor currentF;
stresstensor PK2Stress;
tensor temp01;
tensor temp02;
int T3_dim[] = {NumNodes,NumDof,NumNodes,NumDof};
tensor temp03(4,T3_dim,0.0);
 
for( short GP_c_r = 0 ; GP_c_r < NumIntegrationPts ; GP_c_r++ )
{
r = pts[GP_c_r ];
rw = wts[GP_c_r ];
for( short GP_c_s = 0 ; GP_c_s < NumIntegrationPts ; GP_c_s++ )
{
s = pts[GP_c_s ];
sw = wts[GP_c_s ];
for( short GP_c_t = 0 ; GP_c_t < NumIntegrationPts ; GP_c_t++ )
{
t = pts[GP_c_t ];
tw = wts[GP_c_t ];
where =(GP_c_r * NumIntegrationPts + GP_c_s) * NumIntegrationPts + GP_c_t;
dh = shapeFunctionDerivative(r,s,t);
Jacobian = this->Jacobian_3D(dh);
det_of_Jacobian = Jacobian.determinant();
dhGlobal = this->dh_Global(dh);
weight = rw * sw * tw * det_of_Jacobian;
PK2Stress = theMaterial[where]->getStressTensor();
// if (where==1)
// PK2Stress.print("S2","\n");
temp01 = dhGlobal("Qj") * PK2Stress("ij");
temp01.null_indices(); dhGlobal.null_indices(); PK2Stress.null_indices();
temp02 = dhGlobal("Pl") * temp01("Qi") * weight;
temp02.null_indices( ); dhGlobal.null_indices(); temp01.null_indices();
temp03 += temp02;
}
}
}
 
for ( int i=1 ; i<=NumNodes ; i++ )
{
for ( int j=1 ; j<=NumNodes ; j++ )
{
for ( int k=1 ; k<=NumDof ; k++ )
{
for ( int l=1 ; l<=NumDof ; l++ )
{
Kk.val(i,k,l,j) = temp03.cval(i,l,j,k);
}
}
}
}
 
return Kk;
}
 
//======================================================================
tensor TotalLagrangianFD20NodeBrick::getStiffnessTensor(void)
tensor TotalLagrangianFD20NodeBrick::getRtensor(void)
{
int K_dim[] = {NumNodes,NumDof,NumDof,NumNodes};
tensor Kk(4,K_dim,0.0);
int R_dim[] = {NumNodes,NumDof};
tensor Rr(2,R_dim,0.0);
 
Kk = this->getStiffnessTensor05( ) +
this->getStiffnessTensor04( ) +
this->getStiffnessTensor03( ) +
this->getStiffnessTensor02( ) +
this->getStiffnessTensor01( );
 
// Kk.print();
return Kk;
}
 
//======================================================================
tensor TotalLagrangianFD20NodeBrick::getRtensor01(void)
{
int T_dim[] = {NumNodes,NumDof};
tensor Tt(2,T_dim,0.0);
 
double r = 0.0;
double rw = 0.0;
double s = 0.0;
793,67 → 563,12
tensor JacobianINV;
tensor dhGlobal;
tensor currentF;
stresstensor PK2Stress;
tensor temp01;
 
for( short GP_c_r = 0 ; GP_c_r < NumIntegrationPts ; GP_c_r++ )
{
r = pts[GP_c_r ];
rw = wts[GP_c_r ];
for( short GP_c_s = 0 ; GP_c_s < NumIntegrationPts ; GP_c_s++ )
{
s = pts[GP_c_s ];
sw = wts[GP_c_s ];
for( short GP_c_t = 0 ; GP_c_t < NumIntegrationPts ; GP_c_t++ )
{
t = pts[GP_c_t ];
tw = wts[GP_c_t ];
where =(GP_c_r * NumIntegrationPts + GP_c_s) * NumIntegrationPts + GP_c_t;
dh = shapeFunctionDerivative(r,s,t);
Jacobian = this->Jacobian_3D(dh);
det_of_Jacobian = Jacobian.determinant();
dhGlobal = this->dh_Global(dh);
weight = rw * sw * tw * det_of_Jacobian;
PK2Stress = theMaterial[where]->getStressTensor();
temp01 = dhGlobal("Pj") * PK2Stress("ij") * weight;
temp01.null_indices(); dhGlobal.null_indices(); PK2Stress.null_indices();
Tt += temp01;
}
}
}
return Tt;
}
 
//======================================================================
tensor TotalLagrangianFD20NodeBrick::getRtensor02(void)
{
int T_dim[] = {NumNodes,NumDof};
tensor Tt(2,T_dim,0.0);
 
double r = 0.0;
double rw = 0.0;
double s = 0.0;
double sw = 0.0;
double t = 0.0;
double tw = 0.0;
 
short where = 0;
double weight = 0.0;
 
int dh_dim[] = {NumNodes,NumDof};
tensor dh(2, dh_dim, 0.0);
 
double det_of_Jacobian = 0.0;
 
tensor Jacobian;
tensor JacobianINV;
tensor dhGlobal;
tensor currentF;
tensor nodesDisp;
stresstensor PK2Stress;
tensor temp01;
tensor temp02;
tensor temp03;
//tensor temp03;
tensor F;
 
nodesDisp = this->getNodesDisp( );
 
876,27 → 591,34
dhGlobal = this->dh_Global(dh);
weight = rw * sw * tw * det_of_Jacobian;
PK2Stress = theMaterial[where]->getStressTensor();
temp01 = dhGlobal("Bm") * nodesDisp("Bn");
temp01.null_indices(); dhGlobal.null_indices(); nodesDisp.null_indices();
temp02 = dhGlobal("Pn") * temp01("mn");
temp02.null_indices(); dhGlobal.null_indices(); temp01.null_indices();
temp03 = temp02("Pm") * PK2Stress("im") * weight;
temp03.null_indices(); temp02.null_indices(); PK2Stress.null_indices();
Tt += temp03;
F = theMaterial[where]->getF();
temp01 = PK2Stress("ik") * F("jk");
temp01.null_indices(); //PK2Stress.null_indices(); F.null_indices();
temp02 = dhGlobal("Pj") * temp01("ij") * weight;
temp02.null_indices(); //dhGlobal.null_indices(); temp01.null_indices();
Rr += temp02;
///*
// // R1
// temp01 = dhGlobal("Pj") * PK2Stress("ij") * weight;
// temp01.null_indices(); dhGlobal.null_indices(); PK2Stress.null_indices();
// Rr += temp01;
//
// // R2
// temp01 = dhGlobal("Bm") * nodesDisp("Bn");
// temp01.null_indices(); dhGlobal.null_indices(); nodesDisp.null_indices();
// temp02 = dhGlobal("Pn") * temp01("mn");
// temp02.null_indices(); dhGlobal.null_indices(); temp01.null_indices();
// temp03 = temp02("Pm") * PK2Stress("im") * weight;
// temp03.null_indices(); temp02.null_indices(); PK2Stress.null_indices();
// Rr += temp03;
//*/
 
}
}
}
return Tt;
}
 
//======================================================================
tensor TotalLagrangianFD20NodeBrick::getRtensor(void)
{
int R_dim[] = {NumNodes,NumDof};
tensor Rr(2,R_dim,0.0);
 
Rr = this->getRtensor01( ) + this->getRtensor02( );
 
return Rr;
}
 
951,7 → 673,7
det_of_Jacobian = Jacobian.determinant();
weight = rw * sw * tw * det_of_Jacobian;
Bb = Bb + h("P") * bodyforce("i") * rho *weight;
Bb.null_indices();
Bb.null_indices();
}
}
}
989,14 → 711,10
int kki=0;
int kkj=0;
 
for ( int i=1 ; i<=NumNodes ; i++ )
{
for ( int j=1 ; j<=NumNodes ; j++ )
{
for ( int k=1 ; k<=NumDof ; k++ )
{
for ( int l=1 ; l<=NumDof ; l++ )
{
for ( int i=1 ; i<=NumNodes ; i++ ) {
for ( int j=1 ; j<=NumNodes ; j++ ) {
for ( int k=1 ; k<=NumDof ; k++ ) {
for ( int l=1 ; l<=NumDof ; l++ ) {
kki = k+NumDof*(i-1);
kkj = l+NumDof*(j-1);
K( kki-1 , kkj-1 ) = stifftensor.cval(i,k,l,j);
1025,9 → 743,9
//=============================================================================
const Matrix &TotalLagrangianFD20NodeBrick::getMass ()
{
// Need Work Here
M.Zero();
return M;
// Need Work Here
M.Zero();
return M;
}
 
//======================================================================
1227,17 → 945,18
//=============================================================================
const Vector &TotalLagrangianFD20NodeBrick::getResistingForce ()
{
P.Zero();
int f_dim[] = {NumNodes,NumDof};
tensor NodalForces_in(2,f_dim,0.0);
tensor NodalForces_in(2, f_dim, 0.0);
NodalForces_in = this->getRtensor() - this->getForces();
for (int i = 0; i< NumNodes; i++)
for (int j = 0; j < NumDof; j++)
{
P(i *3 + j) = NodalForces_in.cval(i+1, j+1);
}
 
P.addVector(1.0,Q,-1.0);
for (int i = 0; i < NumNodes; i++) {
for (int j = 0; j < NumDof; j++) {
P(i *3 + j) = NodalForces_in.cval(i+1, j+1);
}
}
P.addVector(1.0, Q,-1.0);
return P;
}
 
1404,16 → 1123,16
for (int i=0; i<NumTotalGaussPts; i++)
{
sigma = theMaterial[i]->getCauchyStressTensor();
P00(0) = sigma.val(1,1);
P00(1) = sigma.val(2,2);
P00(2) = sigma.val(3,3);
P00(3) = sigma.val(2,3);
P00(4) = sigma.val(3,1);
P00(5) = sigma.val(1,2);
sigma = theMaterial[i]->getCauchyStressTensor();
P00(0) = sigma.val(1,1);
P00(1) = sigma.val(2,2);
P00(2) = sigma.val(3,3);
P00(3) = sigma.val(2,3);
P00(4) = sigma.val(3,1);
P00(5) = sigma.val(1,2);
 
s << "\n where = " << i << endln;
s << " Stress (Cauchy): xx yy zz yz zx xy) " << P00 << endln;
s << "\n where = " << i << endln;
s << " Stress (Cauchy): xx yy zz yz zx xy) " << P00 << endln;
}
 
}
1422,12 → 1141,15
Response * TotalLagrangianFD20NodeBrick::setResponse (const char **argv, int argc, Information &eleInfo)
{
if (strcmp(argv[0],"force") == 0 || strcmp(argv[0],"forces") == 0)
return new ElementResponse(this, 1, P);
return new ElementResponse(this, 1, Vector(NumElemDof));
else if (strcmp(argv[0],"stiff") == 0 || strcmp(argv[0],"stiffness") == 0)
return new ElementResponse(this, 2, K);
return new ElementResponse(this, 2, Matrix(matrixData, NumElemDof, NumElemDof));
else if (strcmp(argv[0],"CauchyStress") == 0 || strcmp(argv[0],"stress") == 0)
return new ElementResponse(this, 3, Vector(NumTotalGaussPts*6));
else if (strcmp(argv[0],"PK2Stress") == 0 || strcmp(argv[0],"2PKstress") == 0)
else if (strcmp(argv[0],"PK2Stress") == 0 || strcmp(argv[0],"PK2stress") == 0)
return new ElementResponse(this, 4, Vector(NumTotalGaussPts*6));
 
else
1439,52 → 1161,48
{
static Vector P0(NumTotalGaussPts*6);
switch (responseID)
{
switch (responseID) {
case 1:
return eleInfo.setVector( this->getResistingForce() );
return eleInfo.setVector(this->getResistingForce() );
 
case 2:
return eleInfo.setMatrix(this->getTangentStiff() );
 
case 3:
{
Vector P0(NumTotalGaussPts*6);
tensor sigma;
for (int i=0; i<NumTotalGaussPts; i++)
{
sigma = theMaterial[i]->getCauchyStressTensor();
P0( i*6+0 ) = sigma.val(1,1);
P0( i*6+1 ) = sigma.val(2,2);
P0( i*6+2 ) = sigma.val(3,3);
P0( i*6+3 ) = sigma.val(2,3);
P0( i*6+4 ) = sigma.val(3,1);
P0( i*6+5 ) = sigma.val(1,2);
}
return eleInfo.setVector(P0);
}
case 4:
{
Vector P0(NumTotalGaussPts*6);
tensor sigma;
for (int i=0; i<NumTotalGaussPts; i++)
{
sigma = theMaterial[i]->getStressTensor();
P0( i*6+0 ) = sigma.val(1,1);
P0( i*6+1 ) = sigma.val(2,2);
P0( i*6+2 ) = sigma.val(3,3);
P0( i*6+3 ) = sigma.val(2,3);
P0( i*6+4 ) = sigma.val(3,1);
P0( i*6+5 ) = sigma.val(1,2);
}
return eleInfo.setVector(P0);
}
case 3: {
Vector P0(NumTotalGaussPts*6);
tensor sigma;
for (int i=0; i<NumTotalGaussPts; i++) {
sigma = theMaterial[i]->getCauchyStressTensor();
P0( i*6+0 ) = sigma.val(1,1);
P0( i*6+1 ) = sigma.val(2,2);
P0( i*6+2 ) = sigma.val(3,3);
P0( i*6+3 ) = sigma.val(2,3);
P0( i*6+4 ) = sigma.val(3,1);
P0( i*6+5 ) = sigma.val(1,2);
}
return eleInfo.setVector(P0);
}
 
case 4: {
Vector P0(NumTotalGaussPts*6);
tensor sigma;
for (int i=0; i<NumTotalGaussPts; i++) {
sigma = theMaterial[i]->getStressTensor();
P0( i*6+0 ) = sigma.val(1,1);
P0( i*6+1 ) = sigma.val(2,2);
P0( i*6+2 ) = sigma.val(3,3);
P0( i*6+3 ) = sigma.val(2,3);
P0( i*6+4 ) = sigma.val(3,1);
P0( i*6+5 ) = sigma.val(1,2);
}
return eleInfo.setVector(P0);
}
default:
return -1;
return -1;
 
}
}
}
 
 
/trunk/SRC/element/TotalLagrangianFD20NodeBrick/TotalLagrangianFD20NodeBrick.h
20,7 → 20,7
//#
//#
//# DATE: Sept2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004, Zhao Optimized the Stiffness Tensor
//#
//#
//===============================================================================
39,8 → 39,6
 
#include <string.h>
 
#include <GaussQuadRule1d.h>
 
#include <OPS_Globals.h>
 
#include <basics.h>
48,7 → 46,6
#include <Vector.h>
#include <Matrix.h>
#include <BJtensor.h>
 
#include <stresst.h>
#include <straint.h>
 
60,7 → 57,6
#include <ElementResponse.h>
#include <ElementalLoad.h>
 
class Node;
 
class TotalLagrangianFD20NodeBrick: public Element
{
126,8 → 122,8
static Matrix M; // Element mass matrix
static Vector P; // Element resisting force vector
static double pts[3]; // Stores quadrature points
static double wts[3]; // Stores quadrature weights
Vector Q; // Applied nodal loads
static double wts[3]; // Stores quadrature weights
Vector Q; // Applied nodal loads
Vector bf; // Body forces
 
double rho; // Mass per unit volume
148,14 → 144,14
tensor getNodesCrds(void);
tensor getNodesDisp(void);
 
tensor getStiffnessTensor01(void);
tensor getStiffnessTensor02(void);
tensor getStiffnessTensor03(void);
tensor getStiffnessTensor04(void);
tensor getStiffnessTensor05(void);
// tensor getStiffnessTensor01(void);
// tensor getStiffnessTensor02(void);
// tensor getStiffnessTensor03(void);
// tensor getStiffnessTensor04(void);
// tensor getStiffnessTensor05(void);
tensor getStiffnessTensor(void);
tensor getRtensor01(void);
tensor getRtensor02(void);
// tensor getRtensor01(void);
// tensor getRtensor02(void);
tensor getRtensor(void);
tensor getBodyForce(void);
tensor getSurfaceForce(void);
/trunk/SRC/element/feap/elmt06.f
14,8 → 14,7
integer ix(*),ndf,ndm,nst,isw,nh1,nh2,nh3,nen,n,ior,iow
real*8 d(*), ul(ndf,nen,*), xl(ndm,*), tl(*), s(nst,*), r(*)
real*8 d(*), ul(*), xl(*), tl(*), s(*), p(*), h(*), ctan(*)
integer ix(*), ndf, ndm, nst, isw, nh1, nh2, nh3, iow, n
real*8 p(*), h(*), ctan(*)
integer i,j
real*8 cs, sn, L, dx, dy, k, m, A, E, rho, tran(4), eps, force
/trunk/SRC/material/nD/TclModelBuilderNDMaterialCommand.cpp
25,11 → 25,11
** **
** ****************************************************************** */
// $Revision: 1.32 $
// $Date: 2003-11-20 02:12:25 $
// $Revision: 1.37 $
// $Date: 2004-08-27 17:07:48 $
// $Source: /usr/local/cvs/OpenSees/SRC/material/nD/TclModelBuilderNDMaterialCommand.cpp,v $
// Description: This file contains the function invoked when the user invokes
// the nDMaterial command in the interpreter.
//
49,12 → 49,14
 
#include <PressureIndependMultiYield.h>
#include <PressureDependMultiYield.h>
#include <PressureDependMultiYield02.h>
#include <FluidSolidPorousMaterial.h>
 
#include <string.h>
 
#include <Template3Dep.h>
#include <FiniteDeformationElastic3D.h>
#include <FiniteDeformationEP3D.h>
 
Template3Dep *
TclModelBuilder_addTemplate3Dep(ClientData clientData, Tcl_Interp *interp, int argc,
64,6 → 66,9
TclModelBuilder_addFiniteDeformationElastic3D(ClientData clientData, Tcl_Interp *interp, int argc,
TCL_Char **argv, TclModelBuilder *theTclBuilder, int eleArgStart);
 
FiniteDeformationEP3D *
TclModelBuilder_addFiniteDeformationEP3D(ClientData clientData, Tcl_Interp *interp, int argc,
TCL_Char **argv, TclModelBuilder *theTclBuilder, int eleArgStart);
 
NDMaterial *
TclModelBuilder_addFeapMaterial(ClientData clientData, Tcl_Interp *interp,
464,7 → 469,6
if (gredu != 0) delete [] gredu;
}
// Pressure Dependend Multi-yield, by ZHY
else if (strcmp(argv[1],"PressureDependMultiYield") == 0) {
const int numParam = 15;
559,6 → 563,110
theMaterial = temp;
if (gredu != 0) delete [] gredu;
}
// Pressure Dependend Multi-yield, by ZHY
else if (strcmp(argv[1],"PressureDependMultiYield02") == 0) {
const int numParam = 14;
const int totParam = 26;
int tag;
double param[totParam];
param[numParam] = 20;
param[numParam+1] = 25;
param[numParam+2] = 1.5;
param[numParam+3] = 0.5;
param[numParam+4] = 0.6;
param[numParam+5] = 0.9;
param[numParam+6] = 0.02;
param[numParam+7] = 0.7;
param[numParam+8] = 101.;
param[numParam+9] = .3;
param[numParam+10] = 0.;
param[numParam+11] = 1.;
 
char * arg[] = {"nd", "rho", "refShearModul",
"refBulkModul", "frictionAng",
"peakShearStra", "refPress", "pressDependCoe",
"phaseTransformAngle", "contractionParam1",
"contractionParam3","dilationParam1",
"liquefactionParam1", "liquefactionParam2", "numberOfYieldSurf (=20)",
"contractionParam2=25", "dilationParam2=1.5",
"dilationParam3=0.5",
"e (=0.6)", "volLimit1 (=0.9)", "volLimit2 (=0.02)",
"volLimit3 (=0.7)", "Atmospheric pressure (=101)", "cohesi (=.5)",
"Hv (=0)", "Pv (=1.)" };
if (argc < (3+numParam)) {
opserr << "WARNING insufficient arguments\n";
printCommand(argc,argv);
opserr << "Want: nDMaterial PressureDependMultiYield02 tag? "<< arg[0];
opserr << "? "<< "\n";
opserr << arg[1] << "? "<< arg[2] << "? "<< arg[3] << "? "<< "\n";
opserr << arg[4] << "? "<< arg[5] << "? "<< arg[6] << "? "<< "\n";
opserr << arg[7] << "? "<< arg[8] << "? "<< arg[9] << "? "<< "\n";
opserr << arg[10] << "? "<< arg[11] << "? "<< arg[12] << "? "<< "\n";
opserr << arg[13] << "? "<< arg[14] << "? "<< arg[15] << "? "<< "\n";
opserr << arg[16] << "? "<< arg[17] << "? "<< arg[18] << "? "<< "\n";
opserr << arg[19] << "? "<< arg[20] << "? "<< arg[21] << "? "<< "\n";
opserr << arg[22] << "? "<< arg[23] << "? " << endln;
return TCL_ERROR;
}
 
if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
opserr << "WARNING invalid PressureDependMultiYield02 tag" << endln;
return TCL_ERROR;
}
 
int in = 18;
for (int i=3; (i<argc && i<in); i++)
if (Tcl_GetDouble(interp, argv[i], &param[i-3]) != TCL_OK) {
opserr << "WARNING invalid " << arg[i-3] << "\n";
opserr << "nDMaterial PressureDependMultiYield02: " << tag << endln;
return TCL_ERROR;
}
static double * gredu = 0;
// user defined yield surfaces
if (param[numParam] < 0 && param[numParam] > -100) {
param[numParam] = -int(param[numParam]);
gredu = new double[int(2*param[numParam])];
 
for (int i=0; i<2*param[numParam]; i++)
if (Tcl_GetDouble(interp, argv[i+in], &gredu[i]) != TCL_OK) {
opserr << "WARNING invalid " << arg[i-3] << "\n";
opserr << "nDMaterial PressureIndependMultiYield: " << tag << endln;
return TCL_ERROR;
}
}
if (gredu != 0) {
for (int i=in+int(2*param[numParam]); i<argc; i++)
if (Tcl_GetDouble(interp, argv[i], &param[i-3-int(2*param[numParam])]) != TCL_OK) {
opserr << "WARNING invalid " << arg[i-3-int(2*param[numParam])] << "\n";
opserr << "nDMaterial PressureDependMultiYield02: " << tag << endln;
return TCL_ERROR;
}
} else {
for (int i=in; i<argc; i++)
if (Tcl_GetDouble(interp, argv[i], &param[i-3]) != TCL_OK) {
opserr << "WARNING invalid " << arg[i-3-int(2*param[numParam])] << "\n";
opserr << "nDMaterial PressureDependMultiYield02: " << tag << endln;
return TCL_ERROR;
}
}
 
 
PressureDependMultiYield02 * temp =
new PressureDependMultiYield02 (tag, param[0], param[1], param[2],
param[3], param[4], param[5],
param[6], param[7], param[8],
param[9], param[10], param[11],
param[12], param[13], param[14], gredu,
param[15], param[16], param[17],
param[18], param[19], param[20], param[21],
param[22], param[23], param[24], param[25]);
theMaterial = temp;
if (gredu != 0) delete [] gredu;
}
 
// Fluid Solid Porous, by ZHY
607,7 → 715,6
param[2],param[3]);
}
 
 
else if (strcmp(argv[1],"Template3Dep") == 0) {
theMaterial = TclModelBuilder_addTemplate3Dep(clientData, interp, argc, argv,
theTclBuilder, 2);
619,6 → 726,12
theTclBuilder, 1);
}
 
else if (strcmp(argv[1],"FiniteDeformationEP3D") == 0 ||
strcmp(argv[1],"FDEP3D" ) == 0) {
theMaterial = TclModelBuilder_addFiniteDeformationEP3D(clientData, interp, argc, argv,
theTclBuilder, 2);
}
 
else if (strcmp(argv[1],"PlaneStressMaterial") == 0 ||
strcmp(argv[1],"PlaneStress") == 0) {
if (argc < 4) {
629,7 → 742,7
}
int tag, matTag;
 
if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
opserr << "WARNING invalid nDMaterial PlaneStress tag" << endln;
return TCL_ERROR;
650,7 → 763,7
}
theMaterial = new PlaneStressMaterial( tag, *threeDMaterial );
}
}
else if (strcmp(argv[1],"PlateFiberMaterial") == 0 ||
729,7 → 842,7
theMaterial = TclModelBuilder_addFeapMaterial(clientData,
interp,
argc,
argv,
argv,
theTclBuilder);
}
 
/trunk/SRC/material/nD/NDMaterial.h
23,8 → 23,8
** **
** ****************************************************************** */
 
// $Revision: 1.15 $
// $Date: 2003-11-20 02:12:25 $
// $Revision: 1.16 $
// $Date: 2004-07-20 22:39:02 $
// $Source: /usr/local/cvs/OpenSees/SRC/material/nD/NDMaterial.h,v $
 
 
95,11 → 95,16
 
//Zhao (zcheng@ucdavis.edu)
// added Sept 22 2003 for Large Deformation, F is the Deformation Gradient
virtual int setTrialF(const Tensor &f);
virtual int setTrialF(const Tensor &f, const Tensor &d);
virtual int setTrialFIncr(const Tensor &f);
virtual int setTrialFIncr(const Tensor &f, const Tensor &d);
virtual int setTrialF(const straintensor &f);
virtual int setTrialFIncr(const straintensor &df);
virtual int setTrialC(const straintensor &c);
virtual int setTrialCIncr(const straintensor &dc);
virtual const stresstensor getPK1StressTensor(void);
virtual const stresstensor getCauchyStressTensor(void);
virtual const straintensor getF(void);
virtual const straintensor getC(void);
virtual const straintensor getFp(void);
// Only For Large Deformation, END////////////////////////////////////////
 
virtual int commitState(void) = 0;
virtual int revertToLastCommit(void) = 0;
/trunk/SRC/material/nD/Template3Dep/CAM_PS.cpp
97,7 → 97,7
{
tensor d2Qoverdsds1(2, def_dim_2, 0.0);
tensor DpoDs = EPS->getStress().dpoverds();
tensor D2QoDpDs1 = -M*M;
double D2QoDpDs1 = -M*M;
d2Qoverdsds1 = DpoDs * D2QoDpDs1;
return d2Qoverdsds1;
}
/trunk/SRC/material/nD/Template3Dep/DP_PS.cpp
13,6 → 13,7
//# #
//# DATE: August 03 '93 #
//# UPDATE HISTORY: August 08 '00 #
//# UPDATE HISTORY: 20Aug2004 ZC added kinematic hardening part #
//# #
//# #
//# #
63,61 → 64,102
 
 
//================================================================================
// tensor dQ/dsigma_ij ( eq. 5.206 in Chen )
// tensor dQ/dsigma_ij
//================================================================================
 
tensor DPPotentialSurface::dQods(const EPState *EPS) const {
 
tensor KroneckerI("I", 2, def_dim_2);
stresstensor dQods;
// Second invariant of deviatoric stress tensor
double stressJ2 = EPS->getStress().Jinvariant2();
// Deviatoric stress tensor
stresstensor s = EPS->getStress().deviator();
s.null_indices();
// Tensor dQ/dsigma_ij ( eq. 5.207 in Chen )
tensor KroneckerI("I", 2, def_dim_2);
//double temp1 = EPS->getScalarVar(1);
double temp1 = getalfa2();
//Zhaohui Testing associated flow
tensor dQods = KroneckerI * getalfa2();
//tensor dQods = KroneckerI * EPS->getScalarVar(1);
dQods.null_indices();
if ( stressJ2 > 0.0 )
{
dQods = dQods + s*(1.0/(2.0*sqrt(stressJ2)));
}
stresstensor alpha;
stresstensor s_bar;
stresstensor Tnsr0;
double temp6 = 0.0;
stresstensor temp5;
stresstensor sigma = EPS->getStress();
double p = sigma.p_hydrostatic();
stresstensor sdev = sigma.deviator();
double halfRt2 = 0.5 * sqrt(2.0);
int nod = EPS->getNTensorVar();
if ( nod >=1 ) { //May not have kinematic hardening
alpha = EPS->getTensorVar(1);
s_bar = sdev - (alpha*p);
temp5 = alpha("ij") * s_bar("ij");
temp5.null_indices();
temp6 = temp5.trace();
Tnsr0 = KroneckerI*(temp6/3.0);
}
else {
s_bar = sdev;
}
stresstensor temp3 = s_bar("ij") * s_bar("ij");
temp3.null_indices();
double temp4 = temp3.trace();
temp4 = sqrt(temp4);
Tnsr0 += s_bar;
double eps = pow( d_macheps(), 0.5 );
if ( fabs(temp4) > eps ) {
Tnsr0 = Tnsr0 * (halfRt2/temp4);
}
dQods = (KroneckerI * temp1) + Tnsr0;;
return dQods;
}
 
 
//================================================================================
// tensor d2Q/dsigma_ij_2 ( eq. 5.206 in Chen )
// tensor d2Q/dsigma_ij_2
//================================================================================
 
tensor DPPotentialSurface::d2Qods2(const EPState *EPS) const {
 
double stressJ2 = EPS->getStress().Jinvariant2();
double stressJ2sqrt =pow( stressJ2, 0.5);
 
tensor I("I", 2, def_dim_2);
tensor temp1 = I("im") * I("jn");
temp1.null_indices();
 
tensor I2("I", 2, def_dim_2);
tensor temp2 = I2("mn") * I2("ij") * (1.0/3.0);
temp2.null_indices();
 
tensor temp3 = temp1 - temp2;
temp3.null_indices();
 
stresstensor s = EPS->getStress().deviator();
s.null_indices();
 
tensor temp4 = s("ij") * s("mn");
temp4.null_indices();
 
tensor d2Qods2 = temp3* (1.0/2.0/stressJ2sqrt) - temp4 * (1.0/4.0/stressJ2/stressJ2sqrt);
 
tensor d2Qods2(4, def_dim_4, 0.0);
tensor KroneckerI("I", 2, def_dim_2);
tensor T1 = KroneckerI("ij")*KroneckerI("mn");
T1.null_indices();
tensor T2 = (T1.transpose0110()+T1.transpose0111())*0.5;
tensor T3 = T2 - T1*(1.0/3.0);
//double temp1 = EPS->getScalarVar(1);
//double temp1 = getalfa2();
tensor T4;
stresstensor alpha;
stresstensor s_bar;
tensor temp9(4, def_dim_4, 0.0);
stresstensor sigma = EPS->getStress();
double p = sigma.p_hydrostatic();
stresstensor sdev = sigma.deviator();
double halfRt2 = 0.5 * sqrt(2.0);
int nod = EPS->getNTensorVar();
if ( nod >=1 ) { //May not have kinematic hardening
alpha = EPS->getTensorVar(1);
temp9 = KroneckerI("ij") * alpha("mn");
temp9.null_indices();
T4 = T2 + temp9*(1.0/3.0);
s_bar = sdev - (alpha*p);
}
else {
s_bar = sdev;
T4 = T2;
}
T4 = T2 - temp9;
tensor temp3 = s_bar("ij") * s_bar("ij");
temp3.null_indices();
double temp4 = temp3.trace();
temp4 = sqrt(temp4);
tensor temp5 = s_bar("ij")*s_bar("mn");
double eps = pow( d_macheps(), 0.5 );
if ( fabs(temp4) > eps ) {
d2Qods2 = T3 * (halfRt2/temp4) - temp5*(halfRt2/(temp4*temp4*temp4));
d2Qods2 = T4("ijkl") * d2Qods2("klmn");
d2Qods2.null_indices();
}
return d2Qods2;
}
 
147,20 → 189,3
 
 
#endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/trunk/SRC/material/nD/Template3Dep/DP_YS.cpp
12,7 → 12,7
//# #
//# #
//# DATE: August 08 '00 #
//# UPDATE HISTORY: #
//# UPDATE HISTORY: 20Aug2004 ZC added kinematic hardening part #
//# #
//# #
//# #
65,46 → 65,83
 
//================================================================================
// Yield criterion evaluation function F(EPState)
// f = a*I1 + 0.5*sqrt(2.0)*||s_ij - p*alpha_ij|| - k =0
//================================================================================
 
double DPYieldSurface::f(const EPState *EPS) const {
double temp1 = EPS->getStress().Iinvariant1();
double temp2 = temp1 * EPS->getScalarVar(1);
double temp3 = EPS->CurrentStress.Jinvariant2();
double eps = pow( d_macheps(), (1./2.) );
if ( temp3 < 0.0 && fabs(temp3) < eps )
{
temp3 = 0.0;
}
double temp4 = sqrt(temp3);
 
stresstensor alpha;
stresstensor s_bar;
stresstensor sigma = EPS->getStress();
double p = sigma.p_hydrostatic();
stresstensor sdev = sigma.deviator();
double halfRt2 = 0.5 * sqrt(2.0);
int nod = EPS->getNTensorVar();
if ( nod >=1 ) { //May not have kinematic hardening
alpha = EPS->getTensorVar(1);
s_bar = sdev - (alpha*p);
}
else {
s_bar = sdev;
}
stresstensor temp3 = s_bar("ij") * s_bar("ij");
temp3.null_indices();
double temp4 = temp3.trace();
temp4 = sqrt(temp4);
double temp5 = halfRt2 * temp4;
double k = EPS->getScalarVar(2);
double f = temp2 + temp4 - k;
double f = temp2 + temp5 - k;
 
return f;
}
 
//================================================================================
// tensor dF/dsigma_ij ( eq. 5.206 in Chen )
// tensor dF/dsigma_ij
//================================================================================
 
tensor DPYieldSurface::dFods(const EPState *EPS) const {
tensor KroneckerI("I", 2, def_dim_2);
stresstensor dFods;
// Second invariant of deviatoric stress tensor
double stressJ2 = EPS->CurrentStress.Jinvariant2();
tensor KroneckerI("I", 2, def_dim_2);
double temp1 = EPS->getScalarVar(1);
// Deviatoric stress tensor
stresstensor s = EPS->CurrentStress.deviator();
s.null_indices();
// Tensor dF/dsigma_ij ( eq. 5.206 in Chen )
tensor dFods = KroneckerI * EPS->getScalarVar(1);
dFods.null_indices();
if ( stressJ2 > 0.0 )
{
dFods = dFods + s * ( 1.0 / (2.0 * sqrt(stressJ2) ) );
}
stresstensor alpha;
stresstensor s_bar;
stresstensor Tnsr0;
double temp6 = 0.0;
stresstensor temp5;
stresstensor sigma = EPS->getStress();
double p = sigma.p_hydrostatic();
stresstensor sdev = sigma.deviator();
double halfRt2 = 0.5 * sqrt(2.0);
int nod = EPS->getNTensorVar();
if ( nod >=1 ) { //May not have kinematic hardening
alpha = EPS->getTensorVar(1);
s_bar = sdev - (alpha*p);
temp5 = alpha("ij") * s_bar("ij");
temp5.null_indices();
temp6 = temp5.trace();
Tnsr0 = KroneckerI*(temp6/3.0);
}
else {
s_bar = sdev;
}
stresstensor temp3 = s_bar("ij") * s_bar("ij");
temp3.null_indices();
double temp4 = temp3.trace();
temp4 = sqrt(temp4);
Tnsr0 += s_bar;
double eps = pow( d_macheps(), 0.5 );
if ( fabs(temp4) > eps ) {
Tnsr0 = Tnsr0 * (halfRt2/temp4);
}
dFods = (KroneckerI*temp1) + Tnsr0;
return dFods;
}
 
131,12 → 168,31
 
 
//================================================================================
// double xi_t1 = dF/dt1 = dF/dalpha Derivative in terms of first tensorial var
// Need more work
// double xi_t1 = dF/dt1 = dF/dalpha
//================================================================================
 
tensor DPYieldSurface::xi_t1( const EPState *EPS) const {
stresstensor xi;
stresstensor alpha;
stresstensor sigma = EPS->getStress();
double p = sigma.p_hydrostatic();
double halfRt2 = 0.5 * sqrt(2.0);
int nod = EPS->getNTensorVar();
if ( nod >=1 ) { //May not have kinematic hardening
alpha = EPS->getTensorVar(1);
}
stresstensor sigma_bar = sigma - alpha*p;
stresstensor s_bar = sigma_bar.deviator();
stresstensor temp3 = s_bar("ij") * s_bar("ij");
temp3.null_indices();
double temp4 = temp3.trace();
temp4 = sqrt(temp4);
double eps = pow( d_macheps(), 0.5 );
if ( fabs(temp4) > eps ) {
xi = s_bar * (-halfRt2*p/temp4); //Note the Negative 1 here
}
return xi;
}
 
150,4 → 206,3
}
 
#endif
 
/trunk/SRC/material/nD/NDMaterial.cpp
22,8 → 22,8
** **
** ****************************************************************** */
// $Revision: 1.16 $
// $Date: 2003-11-20 02:12:25 $
// $Revision: 1.17 $
// $Date: 2004-07-20 22:39:02 $
// $Source: /usr/local/cvs/OpenSees/SRC/material/nD/NDMaterial.cpp,v $
// File: ~/material/NDMaterial.C
186,39 → 186,64
//Zhao (zcheng@ucdavis.edu)
// added Sept 22 2003 for Large Deformation, F is the Deformation Grandient
int
NDMaterial::setTrialF(const Tensor &f)
NDMaterial::setTrialF(const straintensor &f)
{
opserr << "NDMaterial::setTrialF -- subclass responsibility\n";
return -1;
}
 
int
NDMaterial::setTrialF(const Tensor &f, const Tensor &d)
NDMaterial::setTrialFIncr(const straintensor &df)
{
opserr << "NDMaterial::setTrialF -- subclass responsibility\n";
return -1;
}
 
int
NDMaterial::setTrialFIncr(const Tensor &f)
NDMaterial::setTrialC(const straintensor &c)
{
opserr << "NDMaterial::setTrialFIncr -- subclass responsibility\n";
opserr << "NDMaterial::setTrialC -- subclass responsibility\n";
return -1;
}
 
int
NDMaterial::setTrialFIncr(const Tensor &f, const Tensor &d)
NDMaterial::setTrialCIncr(const straintensor &c)
{
opserr << "NDMaterial::setTrialFIncr -- subclass responsibility\n";
opserr << "NDMaterial::setTrialC -- subclass responsibility\n";
return -1;
}
 
const stresstensor NDMaterial::getPK1StressTensor(void)
{
opserr << "NDMaterial::getPK1StressTensor -- subclass responsibility\n";
return errstresstensor;
}
 
const stresstensor NDMaterial::getCauchyStressTensor(void)
{
opserr << "NDMaterial::getCauchyStressTensor -- subclass responsibility\n";
return errstresstensor;
}
 
const straintensor NDMaterial::getF(void)
{
opserr << "NDMaterial::getF -- subclass responsibility\n";
return errstraintensor;
}
 
const straintensor NDMaterial::getC(void)
{
opserr << "NDMaterial::getF -- subclass responsibility\n";
return errstraintensor;
}
 
const straintensor NDMaterial::getFp(void)
{
opserr << "NDMaterial::getFp -- subclass responsibility\n";
return errstraintensor;
}
// Only For Large Deformation, END////////////////////////////
 
const Tensor &
NDMaterial::getTangentTensor(void)
{
/trunk/SRC/material/nD/FiniteDeformation/SimoPisterWEnergy.cpp
21,41 → 21,28
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY: Sept 2003
//# 28May2004
//#
//#
//===============================================================================
 
#ifndef SimoPisterWEnergy_CPP
#define SimoPisterWEnergy_CPP
 
#include <math.h>
#include <SimoPisterWEnergy.h>
 
//================================================================================
// Normal constructor
//================================================================================
SimoPisterWEnergy::SimoPisterWEnergy(double E_in, double nu_in )
SimoPisterWEnergy::SimoPisterWEnergy(double K_in) :K(K_in)
{
E = E_in;
nu = nu_in;
 
if (nu != -1.0)
G = 0.5*E/(1.0+nu);
else
opserr << "Poisson's ratio = -1.0, not permited for this model (SimoPisterWEnergy)";
if (nu != 0.5)
K = 0.33333333333333*E/(1.0-2.0*nu);
else
opserr << "Poisson's ratio = 0.5, not permited for this model (SimoPisterWEnergy)";
 
}
 
//SimoPisterWEnergy::SimoPisterWEnergy( )
//{
//
//}
SimoPisterWEnergy::SimoPisterWEnergy( ) :K(0.0)
{
 
}
 
//================================================================================
// Normal destructor
//================================================================================
69,20 → 56,11
//================================================================================
WEnergy * SimoPisterWEnergy::newObj( )
{
WEnergy *new_WEnergy = new SimoPisterWEnergy(E, nu);
WEnergy *new_WEnergy = new SimoPisterWEnergy(K);
return new_WEnergy;
}
 
const double SimoPisterWEnergy::getE()
{
return E;
}
 
const double SimoPisterWEnergy::getnu()
{
return nu;
}
 
//================================================================================
// w
//================================================================================
110,5 → 88,6
return d2colwOverdJ2;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdFlow/fdFlow.cpp
New file
0,0 → 1,91
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdFlow_CPP
#define fdFlow_CPP
 
#include "fdFlow.h"
 
fdFlow::fdFlow()
{
 
}
 
double fdFlow::dFodq(const stresstensor &sts, const FDEPState &fdepstate ) const
{
return 0.0;
}
 
stresstensor fdFlow::dFoda(const stresstensor &sts, const FDEPState &fdepstate ) const
{
stresstensor Z2;
return Z2;
}
 
tensor fdFlow::d2Fodsds(const stresstensor &sts, const FDEPState &fdepstate ) const
{
tensor Z4(4, def_dim_4, 0.0);
return Z4;
}
 
stresstensor fdFlow::d2Fodsdq(const stresstensor &sts, const FDEPState &fdepstate ) const
{
stresstensor Z2;
return Z2;
}
 
tensor fdFlow::d2Fodsda(const stresstensor &sts, const FDEPState &fdepstate ) const
{
tensor Z4(4, def_dim_4, 0.0);
return Z4;
}
 
double fdFlow::d2Fodqdq(const stresstensor &sts, const FDEPState &fdepstate ) const
{
return 0.0;
}
 
stresstensor fdFlow::d2Fodqda(const stresstensor &sts, const FDEPState &fdepstate ) const
{
stresstensor Z2;
return Z2;
}
 
tensor fdFlow::d2Fodada(const stresstensor &sts, const FDEPState &fdepstate ) const
{
tensor Z4(4, def_dim_4, 0.0);
return Z4;
}
 
OPS_Stream& operator<<(OPS_Stream& os, const fdFlow &fdfl)
{
os << "fdFlow Parameters: " << "\n";
return os;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdFlow/fdFlowVM.cpp
New file
0,0 → 1,114
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdFlowVM_CPP
#define fdFlowVM_CPP
 
#include "fdFlowVM.h"
 
//--------------------------------------------------------------------
fdFlowVM::fdFlowVM(double Y0_in) :Y0(Y0_in)
{
 
}
 
//--------------------------------------------------------------------
fdFlow * fdFlowVM::newObj()
{
fdFlow *newfdyd = new fdFlowVM(Y0);
return newfdyd;
}
 
//-------------------------------------------------------------------
// Q = 1.5*(S_ij-a_ij)*(S_ij-a_ij) - (Y0+q)*(Y0+q) = 0, Note here NumRank = 2
//-------------------------------------------------------------------
 
//--------------------------------------------------------------------
stresstensor fdFlowVM::dFods(const stresstensor &sts, const FDEPState &fdepstate) const
{
return sts.deviator() * 3.0;
}
 
//--------------------------------------------------------------------
double fdFlowVM::dFodq(const stresstensor &sts, const FDEPState &fdepstate ) const
{
double q = fdepstate.getStressLikeInVar();
return -2.0 * ( Y0+q );
}
 
//--------------------------------------------------------------------
stresstensor fdFlowVM::dFoda(const stresstensor &sts, const FDEPState &fdepstate) const
{
return sts.deviator() * (-3.0);
}
 
//--------------------------------------------------------------------
tensor fdFlowVM::d2Fodsds(const stresstensor &sts, const FDEPState &fdepstate ) const
{
tensor I2("I", 2 , def_dim_2);
tensor I4 = I2("ij")*I2("kl"); I4.null_indices();
//I4 = (I4.transpose0110()+I4.transpose0111())*1.5 - I4; //For symmetric tensor
I4 = I4*3.0 - I4; //For general tensor
return I4;
}
 
//--------------------------------------------------------------------
tensor fdFlowVM::d2Fodsda(const stresstensor &sts, const FDEPState &fdepstate ) const
{
tensor I2("I", 2 , def_dim_2);
tensor I4 = I2("ij")*I2("kl"); I4.null_indices();
//I4 = (I4.transpose0110()+I4.transpose0111())*1.5 - I4; //For symmetric tensor
I4 = I4*3.0 - I4; //For general tensor
return I4 *(-1.0);
}
 
//--------------------------------------------------------------------
double fdFlowVM::d2Fodqdq(const stresstensor &sts, const FDEPState &fdepstate ) const
{
return -2.0;
}
 
//--------------------------------------------------------------------
tensor fdFlowVM::d2Fodada(const stresstensor &sts, const FDEPState &fdepstate ) const
{
tensor I2("I", 2 , def_dim_2);
tensor I4 = I2("ij")*I2("kl"); I4.null_indices();
//I4 = (I4.transpose0110()+I4.transpose0111())*1.5; //For symmetric tensor
I4 = I4 *3.0; //For general tensor
return I4;
}
 
//--------------------------------------------------------------------
OPS_Stream& operator<<(OPS_Stream& os, const fdFlowVM &fdflVM)
{
os << "fdFlowVM Parameters: " << "\n";
os << "Y0: " << fdflVM.Y0 << "\n";
return os;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdFlow/fdFlowDP.cpp
New file
0,0 → 1,136
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdFlowDP_CPP
#define fdFlowDP_CPP
 
#include "fdFlowDP.h"
 
//--------------------------------------------------------------------
fdFlowDP::fdFlowDP(double DilatedAngle_in, int ConeIndex_in)
:DilatedAngle(DilatedAngle_in), ConeIndex(ConeIndex_in)
{
double pipi = 3.14159265358979323846;
double Root3 = sqrt(3.0);
double Root1o3 = 1.0/Root3;
double archAngle = DilatedAngle*pipi/180.0;
 
switch (ConeIndex) {
 
case 0: { // Compressive (Outer) Cone
k1 = 2.0*Root1o3*sin(archAngle)/(3.0-sin(archAngle));
k2 = 6.0*Root1o3*cos(archAngle)/(3.0-sin(archAngle));
break;
}
 
case 1: { // Tensile (Inner) Cone
k1 = 2.0*Root1o3*sin(archAngle)/(3.0+sin(archAngle));
k2 = 6.0*Root1o3*cos(archAngle)/(3.0+sin(archAngle));
break;
}
 
case 2: { // Mean Cone
k1 = Root3*sin(archAngle)/(9.0-sin(archAngle)*sin(archAngle));
k2 = 2.0*Root3*cos(archAngle)/(9.0-sin(archAngle)*sin(archAngle));
break;
}
 
case 3: { // Inner-tangent Cone
k1 = tan(archAngle)/sqrt(9.0+12.0*tan(archAngle)*tan(archAngle));
k2 = 3.0/sqrt(9.0+12.0*tan(archAngle)*tan(archAngle));
break;
}
 
default: { // Compressive (Outer) Cone
k1 = 2.0*Root1o3*sin(archAngle)/(3.0-sin(archAngle));
k2 = 6.0*Root1o3*cos(archAngle)/(3.0-sin(archAngle));
}
}
}
 
//--------------------------------------------------------------------
fdFlow * fdFlowDP::newObj()
{
fdFlow *newfdyd = new fdFlowDP(DilatedAngle, ConeIndex);
return newfdyd;
}
 
//-------------------------------------------------------------------
// Q = k1*I1 + sqrt(0.5*Sij*Sji) - k2*(c+q) = 0,
// Note here NumRank = 1, No Kinematic Hardening
//-------------------------------------------------------------------
 
//--------------------------------------------------------------------
stresstensor fdFlowDP::dFods(const stresstensor &sts, const FDEPState &fdepstate) const
{
// NumRank=1, No Ki Hardeing
tensor tI2("I", 2 , def_dim_2);
stresstensor dev = sts.deviator();
tensor st = dev("ij")*dev("ij");
st.null_indices();
double x = st.trace();
return tI2*k1 + dev *(1.0/sqrt(2.0*x));
}
 
//--------------------------------------------------------------------
double fdFlowDP::dFodq(const stresstensor &sts, const FDEPState &fdepstate ) const
{
// NumRank=1, No Ki Hardeing
return -k2;
}
 
//--------------------------------------------------------------------
tensor fdFlowDP::d2Fodsds(const stresstensor &sts, const FDEPState &fdepstate ) const
{
// NumRank=1, No Ki Hardeing
tensor tI2("I", 2, def_dim_2);
stresstensor dev = sts.deviator();
tensor st = dev("ij")*dev("ij")*2.0;
st.null_indices();
double x = st.trace();
tensor I4 = tI2("ij")*tI2("kl");
I4.null_indices();
I4 = I4 - I4*(1.0/3.0);
tensor st4 = dev("ij")*dev("kl");
st4.null_indices();
 
return I4 *(1.0/sqrt(x)) - st4 *(2.0/x/sqrt(x));
}
 
//--------------------------------------------------------------------
OPS_Stream& operator<<(OPS_Stream& os, const fdFlowDP &fdfdDP)
{
os << "fdFlowDP Parameters: " << "\n";
os << "DilatedAngle: " << fdfdDP.DilatedAngle << "\n";
os << "ConeIndex: " << fdfdDP.ConeIndex << "\n";
return os;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdFlow/fdFlow.h
New file
0,0 → 1,62
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdFlow_H
#define fdFlow_H
 
#include <stresst.h>
#include <straint.h>
 
#include <FDEPState.h>
 
class fdFlow
{
public:
fdFlow();
virtual ~fdFlow() {};
virtual fdFlow *newObj() = 0;
 
virtual stresstensor dFods(const stresstensor &sts, const FDEPState &fdepstate ) const = 0;
virtual double dFodq(const stresstensor &sts, const FDEPState &fdepstate ) const;
virtual stresstensor dFoda(const stresstensor &sts, const FDEPState &fdepstate ) const;
 
virtual tensor d2Fodsds(const stresstensor &sts, const FDEPState &fdepstate ) const ;
virtual stresstensor d2Fodsdq(const stresstensor &sts, const FDEPState &fdepstate ) const;
virtual tensor d2Fodsda(const stresstensor &sts, const FDEPState &fdepstate ) const;
virtual double d2Fodqdq(const stresstensor &sts, const FDEPState &fdepstate ) const;
virtual stresstensor d2Fodqda(const stresstensor &sts, const FDEPState &fdepstate ) const;
virtual tensor d2Fodada(const stresstensor &sts, const FDEPState &fdepstate ) const;
 
virtual void print() = 0;
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdFlow & fdfl);
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdFlow/fdFlowVM.h
New file
0,0 → 1,61
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdFlowVM_H
#define fdFlowVM_H
 
#include "fdFlow.h"
 
class fdFlowVM : public fdFlow
{
private:
double Y0;
public:
fdFlowVM(double Y0_in);
// virtual ~fdFlowVM() {};
fdFlow *newObj();
 
stresstensor dFods(const stresstensor &sts, const FDEPState &fdepstate ) const ;
double dFodq(const stresstensor &sts, const FDEPState &fdepstate ) const;
stresstensor dFoda(const stresstensor &sts, const FDEPState &fdepstate ) const ;
tensor d2Fodsds(const stresstensor &sts, const FDEPState &fdepstate ) const ;
//stresstensor d2Fodsdq(const stresstensor &sts, const FDEPState &fdepstate ) const ;
tensor d2Fodsda(const stresstensor &sts, const FDEPState &fdepstate ) const ;
double d2Fodqdq(const stresstensor &sts, const FDEPState &fdepstate ) const;
//stresstensor d2Fodqds(const stresstensor &sts, const FDEPState &fdepstate ) const ;
 
tensor d2Fodada(const stresstensor &sts, const FDEPState &fdepstate ) const ;
 
void print() { opserr << *this; };
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdFlowVM &fdflVM);
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdFlow/fdFlowDP.h
New file
0,0 → 1,64
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdFlowDP_H
#define fdFlowDP_H
 
#include "fdFlow.h"
 
class fdFlowDP : public fdFlow
{
private:
double DilatedAngle;
int ConeIndex;
double k1;
double k2;
public:
fdFlowDP(double DilatedAngle_in, int ConeIndex_in = 0);
// virtual ~fdFlowDP() {};
fdFlow *newObj();
 
stresstensor dFods(const stresstensor &sts, const FDEPState &fdepstate ) const ;
double dFodq(const stresstensor &sts, const FDEPState &fdepstate ) const;
//stresstensor dFoda(const stresstensor &sts, const FDEPState &fdepstate ) const ;
tensor d2Fodsds(const stresstensor &sts, const FDEPState &fdepstate ) const ;
//stresstensor d2Fodsdq(const stresstensor &sts, const FDEPState &fdepstate ) const ;
//tensor d2Fodsda(const stresstensor &sts, const FDEPState &fdepstate ) const ;
//double d2Fodqdq(const stresstensor &sts, const FDEPState &fdepstate ) const;
//stresstensor d2Fodqds(const stresstensor &sts, const FDEPState &fdepstate ) const ;
 
//tensor d2Fodada(const stresstensor &sts, const FDEPState &fdepstate ) const ;
 
void print() { opserr << *this; };
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdFlowDP &fdflDP);
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdFlow/Makefile
New file
0,0 → 1,23
include ../../../../../Makefile.def
 
OBJS = fdFlow.o \
fdFlowVM.o \
fdFlowDP.o \
fdFlowDP.o
 
all: $(OBJS)
 
# Miscellaneous
 
tidy:
@$(RM) $(RMFLAGS) Makefile.bak *~ #*# core
 
clean: tidy
@$(RM) $(RMFLAGS) $(OBJS) *.o
 
spotless: clean
 
wipe: spotless
 
# DO NOT DELETE THIS LINE -- make depend depends on it.
 
/trunk/SRC/material/nD/FiniteDeformation/MooneyRivlinWEnergy.h
30,27 → 30,21
 
#include <Vector.h>
#include <Tensor.h>
//#include <BJvector.h>
//#include <BJtensor.h>
 
#include <OPS_Globals.h>
#include <W.h>
 
 
class MooneyRivlinWEnergy : public WEnergy
{
private:
double E;
double nu;
double c1;
double c2;
public:
MooneyRivlinWEnergy(double , double, double, double );
// MooneyRivlinWEnergy( );
MooneyRivlinWEnergy(double , double);
MooneyRivlinWEnergy( );
~MooneyRivlinWEnergy( );
WEnergy *newObj( );
 
const double getE();
const double getnu();
const double wE(const double &, const Vector &);
const Vector disowOdlambda(const Vector &);
const Vector d2isowOdlambda2(const Vector & );
58,7 → 52,6
// const double dvolwOdJ( const double &);
// const double d2volOdj2(const double &);
 
// friend OPS_Stream& operator<< (OPS_Stream& os, const MooneyRivlinWEnergy &W);
 
};
 
/trunk/SRC/material/nD/FiniteDeformation/OgdenWEnergy.h
20,7 → 20,7
//#
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004
//#
//#
//===============================================================================
30,28 → 30,24
 
#include <Vector.h>
#include <Tensor.h>
//#include <BJvector.h>
//#include <BJtensor.h>
 
#include <OPS_Globals.h>
#include <W.h>
 
#include <math.h>
 
 
class OgdenWEnergy : public WEnergy
{
private:
double E;
double nu;
int N_Ogden;
double *cr_Ogden;
double *mur_Ogden;
public:
OgdenWEnergy(double, double, int , double * , double * );
// OgdenWEnergy( );
OgdenWEnergy(int , double * , double * );
OgdenWEnergy( );
~OgdenWEnergy( );
WEnergy *newObj( );
 
const double getE();
const double getnu();
const double wE(const double &, const Vector &) ;
const Vector disowOdlambda(const Vector & ) ;
const Vector d2isowOdlambda2(const Vector & ) ;
59,7 → 55,6
// const double dvolwOdJ( const double &) ;
// const double d2volwOdJ2( const double &) ;
 
// friend OPS_Stream& operator<< (OPS_Stream& os, const OgdenWEnergy &W);
 
};
 
/trunk/SRC/material/nD/FiniteDeformation/W.cpp
42,16 → 42,6
 
}
 
const double WEnergy::getE()
{
return 0.0;
}
 
const double WEnergy::getnu()
{
return 0.0;
}
 
const double WEnergy::wE(const double &J_in, const Vector &lambda_wave_in)
{
return 0.0;
60,13 → 50,12
 
const Vector WEnergy::disowOdlambda( const Vector &lambda_wave_in)
{
return Vector(3);
return Vector(3);
}
 
const Vector WEnergy::d2isowOdlambda2( const Vector &lambda_wave_in)
{
 
return Vector(3);
return Vector(3);
}
 
const Tensor WEnergy::d2isowOdlambda1dlambda2(const Vector &lambda_wave_in)
82,8 → 71,10
 
const double WEnergy::d2volwOdJ2(const double &J_in)
{
return 0.0;
return 0.0;;
 
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/FiniteDeformationElastic3D.h
21,61 → 21,52
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY: Sept 2003
//#
//#
//# May28, 2004
//#
//===============================================================================
 
#ifndef FiniteDeformationElastic3D_h
#define FiniteDeformationElastic3D_h
 
#include <NDMaterial.h>
#include <math.h>
 
#include <ID.h>
#include <Channel.h>
#include <OPS_Globals.h>
#include <ConsoleErrorHandler.h>
 
#include <Matrix.h>
#include <Vector.h>
#include <Tensor.h>
#include <stresst.h>
#include <straint.h>
 
#include <ID.h>
#include <Channel.h>
#include <G3Globals.h>
#include <NDMaterial.h>
 
#include <ConsoleErrorHandler.h>
 
 
#include <W.h> // for W Strain Energy Functions
 
class FiniteDeformationElastic3D : public NDMaterial
{
public:
FiniteDeformationElastic3D(int tag, int classTag, WEnergy * , double );
FiniteDeformationElastic3D(int tag, WEnergy * , double );
FiniteDeformationElastic3D(int tag, WEnergy * );
FiniteDeformationElastic3D();
FiniteDeformationElastic3D(int tag, int classTag, double );
FiniteDeformationElastic3D();
virtual ~FiniteDeformationElastic3D();
 
virtual double getRho(void);
virtual double getE(void);
virtual double getnu(void);
 
virtual int setTrialF(const Tensor &f);
virtual int setTrialF(const Tensor &f, const Tensor &d);
virtual int setTrialFIncr(const Tensor &f);
virtual int setTrialFIncr(const Tensor &f, const Tensor &d);
virtual int setTrialF(const straintensor &f);
virtual int setTrialFIncr(const straintensor &df);
virtual int setTrialC(const straintensor &c);
virtual int setTrialCIncr(const straintensor &dc);
 
virtual const Tensor& getTangentTensor(void) ;
virtual const Tensor& getTangentTensor(void) ; // Default Lagrangian Tangent Tensor
virtual const Tensor& getInitialTangentTensor(void) ;
 
virtual const straintensor getStrainTensor(void) ; // Default Green Strain
virtual const stresstensor getStressTensor(void) ; // Default 2nd Piola Kirchhoff Stress
virtual const straintensor getStrainTensor(void) ; // Default Green Lagrangian Strain
virtual const stresstensor getStressTensor(void) ; // Default 2nd Piola Kirchhoff Stress
virtual const straintensor getF(void);
virtual const straintensor getC(void);
 
// virtual const Vector &getStress(void);
// virtual const Vector &getStrain(void);
 
// virtual const stresstensor getCommittedStress(void);
// virtual const straintensor getCommittedStrain(void);
 
// virtual const straintensor getPlasticStrainTensor(void);
 
virtual int commitState(void) ;
virtual int revertToLastCommit(void) ;
virtual int revertToStart(void) ;
89,7 → 80,7
virtual int sendSelf(int commitTag, Channel &theChannel);
virtual int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
 
void Print(OPS_Stream &s, int flag = 0);
virtual void Print(OPS_Stream &s, int flag = 0);
 
virtual int setParameter(char **argv, int argc, Information &info);
virtual int updateParameter(int parameterID, Information &info);
97,46 → 88,10
virtual const stresstensor getPK1StressTensor(void) ;
virtual const stresstensor getCauchyStressTensor(void) ;
 
private:
 
WEnergy *getWEnergy(void);
 
const Tensor getF(void);
const Tensor getC(void);
const double getJ(void) ;
const Vector getlambda(void) ;
const Vector getlambda_wave(void) ;
 
const Vector wa(void) ;
const Tensor Yab(void) ;
const Tensor FDisoStiffness(void) ;
const Tensor FDvolStiffness(void) ;
 
 
// int setInitialTangentTensor(void);
int ComputeTrials(void);
int getCaseIndex(void);
 
protected:
 
WEnergy * W;
double rho;
 
double rho;
double E;
double nu;
 
Tensor F;
Tensor C;
double J;
Tensor Cinv;
double lambda1, lambda2, lambda3;
double lambda_wave1, lambda_wave2, lambda_wave3;
int caseIndex;
 
Tensor Stiffness;
straintensor thisGreenStrain;
stresstensor thisPK2Stress;
 
};
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/FDdecoupledElastic3D.cpp
New file
0,0 → 1,675
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#include <FDdecoupledElastic3D.h>
 
//-----------------------------------------------------------------------------------------------------------------------------------------------
FDdecoupledElastic3D::FDdecoupledElastic3D(int tag,
int classTag,
WEnergy *wEnergy_in,
double rho_in= 0.0)
:FiniteDeformationElastic3D(tag, classTag, rho_in)
{
if ( wEnergy_in )
{
W = wEnergy_in->newObj();
}
else
{
opserr << "FDdecoupledElastic3D:: FDdecoupledElastic3D failed to construct the W Energy\n";
exit(-1);
}
}
 
FDdecoupledElastic3D::FDdecoupledElastic3D(int tag,
WEnergy *wEnergy_in,
double rho_in = 0.0)
:FiniteDeformationElastic3D(tag, ND_TAG_FDdecoupledElastic3D, rho_in)
{
if ( wEnergy_in)
{
W = wEnergy_in->newObj();
}
else
{
opserr << "FDdecoupledElastic3D:: FDdecoupledElastic3D failed to construct the W Energy\n";
exit(-1);
}
}
 
FDdecoupledElastic3D::FDdecoupledElastic3D(int tag,
WEnergy *wEnergy_in)
:FiniteDeformationElastic3D(tag, ND_TAG_FDdecoupledElastic3D, 0.0)
{
if ( wEnergy_in )
{
W = wEnergy_in->newObj();
}
else
{
opserr << "FDdecoupledElastic3D:: FDdecoupledElastic3D failed to construct the W Energy\n";
exit(-1);
}
}
 
//------------------------------------------------------------------------------------------------------------------------------------------------
FDdecoupledElastic3D::FDdecoupledElastic3D( )
:FiniteDeformationElastic3D(0, 0, 0.0)
{
W = 0;
}
 
//------------------------------------------------------------------------------------------------------------------------------------------------
FDdecoupledElastic3D::FDdecoupledElastic3D(FDdecoupledElastic3D &fde3d )
{
F = fde3d.F;
C = fde3d.C;
Cinv = fde3d.Cinv;
J = fde3d.J;
lambda1 = fde3d.lambda1;
lambda2 = fde3d.lambda2;
lambda3 = fde3d.lambda3;
lambda_wave1 = fde3d.lambda_wave1;
lambda_wave2 = fde3d.lambda_wave2;
lambda_wave3 = fde3d.lambda_wave3;
 
Stiffness = fde3d.Stiffness;
thisGreenStrain = fde3d.thisGreenStrain;
thisPK2Stress = fde3d.thisPK2Stress;
}
 
//------------------------------------------------------------------------------------------------------------------------------------------------
FDdecoupledElastic3D::~FDdecoupledElastic3D()
{
if (W)
delete W;
}
 
//-------------------------------------------------------------------------------------------------------------------------------------------------
double FDdecoupledElastic3D::getRho(void)
{
return rho;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------
WEnergy *FDdecoupledElastic3D::getWEnergy(void)
{
return W;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::setTrialF(const straintensor &f)
{
FromForC = 0;
F = f;
C = F("ki")*F("kj"); C.null_indices();
return this->ComputeTrials();
}
//---------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::setTrialFIncr(const straintensor &df)
{
return this->setTrialF(this->getF() + df);
}
//---------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::setTrialC(const straintensor &c)
{
FromForC = 1;
C = c;
return this->ComputeTrials();
}
//---------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::setTrialCIncr(const straintensor &dc)
{
return this->setTrialC(this->getC() + dc);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
const straintensor FDdecoupledElastic3D::getF(void)
{
return F;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
const straintensor FDdecoupledElastic3D::getC(void)
{
return C;
}
//------------------------------------------------------------------------------------------------------------------------------------------------------
const double FDdecoupledElastic3D::getJ(void)
{
return J;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
const Vector FDdecoupledElastic3D::getlambda(void)
{
Vector lambda(3);
 
lambda(0) = lambda1;
lambda(1) = lambda2;
lambda(2) = lambda3;
 
return lambda;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------
const Vector FDdecoupledElastic3D::getlambda_wave(void)
{
Vector lambda_wave(3);
lambda_wave(0) = lambda_wave1;
lambda_wave(1) = lambda_wave2;
lambda_wave(2) = lambda_wave3;
 
return lambda_wave;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
const Vector FDdecoupledElastic3D::wa(void)
{
Vector Wa(3);
Vector lambda_wave(3);
lambda_wave = this->getlambda_wave();
Vector disowOverlambda = W->disowOdlambda(lambda_wave);
double temp = disowOverlambda(0) * lambda_wave(0) +
disowOverlambda(1) * lambda_wave(1) +
disowOverlambda(2) * lambda_wave(2) ;
temp = temp * (-0.3333333333333333333333333333);
Wa(0) = temp + disowOverlambda(0) * lambda_wave(0);
Wa(1) = temp + disowOverlambda(1) * lambda_wave(1);
Wa(2) = temp + disowOverlambda(2) * lambda_wave(2);
return Wa;
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor FDdecoupledElastic3D::Yab(void)
{
Tensor Y(2, def_dim_2, 0.0);
Tensor I_ij("I", 2, def_dim_2);
Vector lambda_wave(3);
lambda_wave = this->getlambda_wave();
Tensor d2 = W->d2isowOdlambda1dlambda2(lambda_wave);
Vector d1 = W->disowOdlambda(lambda_wave);
Vector d11 = W->d2isowOdlambda2(lambda_wave);
d2.val(1,1) = d11(0);
d2.val(2,2) = d11(1);
d2.val(3,3) = d11(2);
Vector tempi(3);
double tempd = d1(0)*lambda_wave(0) + d1(1)*lambda_wave(1) + d1(2)*lambda_wave(2) ;
double tempcd = 0.0;
for (int i=0; i<3; i++)
{
tempi(i) = 0.0;
for (int j=0; j<3; j++)
{
tempi(i) += d2.cval(i+1,j+1) * lambda_wave(i) * lambda_wave(j);
tempcd += d2.cval(i+1,j+1) * lambda_wave(i) * lambda_wave(j);
}
}
for(int a=1; a<=3; a++)
{
for(int b=1; b<=3; b++)
{
Y.val(a,b) = d1(a-1)*I_ij.cval(a,b)*lambda_wave(b-1) + d2.cval(a,b)*lambda_wave(a-1)*lambda_wave(b-1) -
( tempi(a-1) + tempi(b-1) + d1(a-1)*lambda_wave(a-1) + d1(b-1)*lambda_wave(b-1) ) / 3.0 +
( tempcd + tempd ) / 9.0;
}
}
return Y;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor FDdecoupledElastic3D::FDisoStiffness(void)
{
Tensor I_ij("I", 2, def_dim_2);
Tensor I_ijkl( 4, def_dim_4, 0.0 );
I_ijkl = I_ij("ij") * I_ij("kl");
I_ij.null_indices();
Tensor I_ikjl( 4, def_dim_4, 0.0 );
I_ikjl = I_ijkl.transpose0110();
Tensor I_iljk( 4, def_dim_4, 0.0 );
I_iljk = I_ijkl.transpose0111();
Tensor I4s = (I_ikjl+I_iljk)*0.5;
Tensor tempI = I4s - I_ijkl;
 
Tensor CinvCinv = Cinv("ij") * Cinv("kl");
CinvCinv.null_indices(); Cinv.null_indices();
 
Tensor ICinv = ( CinvCinv.transpose0110() + CinvCinv.transpose0111() ) * (0.5);
 
Tensor CinvCinv_ICinv = CinvCinv - ICinv;
 
double I1 = lambda1*lambda1 + lambda2*lambda2 + lambda3*lambda3;
 
Vector Wa = this->wa();
Tensor yab = this->Yab();
 
Tensor L_iso(2,def_dim_2,0.0);
 
if(caseIndex == 0)
{
double d1 = (lambda1+lambda2)*(lambda1+lambda3)*(lambda1-lambda2)*(lambda1-lambda3);
double d2 = (lambda2+lambda3)*(lambda2+lambda1)*(lambda2-lambda3)*(lambda2-lambda1);
double d3 = (lambda3+lambda1)*(lambda3+lambda2)*(lambda3-lambda1)*(lambda3-lambda2);
 
Tensor M1 = ( C - I_ij*(I1-lambda1*lambda1) + Cinv*(J*J/(lambda1*lambda1)) ) * (1.0/d1);
Tensor M2 = ( C - I_ij*(I1-lambda2*lambda2) + Cinv*(J*J/(lambda2*lambda2)) ) * (1.0/d2);
Tensor M3 = ( C - I_ij*(I1-lambda3*lambda3) + Cinv*(J*J/(lambda3*lambda3)) ) * (1.0/d3);
 
double d1p = 4.0 *lambda1*lambda1*lambda1*lambda1 - I1*lambda1*lambda1 - J*J /(lambda1*lambda1);
double d2p = 4.0 *lambda2*lambda2*lambda2*lambda2 - I1*lambda2*lambda2 - J*J /(lambda2*lambda2);
double d3p = 4.0 *lambda3*lambda3*lambda3*lambda3 - I1*lambda3*lambda3 - J*J /(lambda3*lambda3);
 
Tensor Cm1M1M1Cm1 = Cinv("ij")*M1("kl") + M1("ij")*Cinv("kl");
Cinv.null_indices(); M1.null_indices(); Cm1M1M1Cm1.null_indices();
 
Tensor Cm1M2M2Cm1 = Cinv("ij")*M2("kl") + M2("ij")*Cinv("kl");
Cinv.null_indices(); M2.null_indices(); Cm1M2M2Cm1.null_indices();
 
Tensor Cm1M3M3Cm1 = Cinv("ij")*M3("kl") + M3("ij")*Cinv("kl");
Cinv.null_indices(); M3.null_indices(); Cm1M3M3Cm1.null_indices();
 
 
Tensor dM1M1d = I_ij("ij")*M1("kl") + M1("ij")*I_ij("kl");
I_ij.null_indices(); M1.null_indices(); dM1M1d.null_indices();
 
Tensor dM2M2d = I_ij("ij")*M2("kl") + M2("ij")*I_ij("kl");
I_ij.null_indices(); M2.null_indices(); dM2M2d.null_indices();
 
Tensor dM3M3d = I_ij("ij")*M3("kl") + M3("ij")*I_ij("kl");
I_ij.null_indices(); M3.null_indices(); dM3M3d.null_indices();
 
Tensor M1M1 = M1("ij") * M1("kl");
M1.null_indices(); M1M1.null_indices();
Tensor M2M2 = M2("ij") * M2("kl");
M2.null_indices(); M2M2.null_indices();
Tensor M3M3 = M3("ij") * M3("kl");
M3.null_indices(); M3M3.null_indices();
 
Tensor calM1 = ( tempI + (CinvCinv_ICinv -Cm1M1M1Cm1)*(J*J/(lambda1*lambda1)) + dM1M1d*(lambda1*lambda1) - M1M1*d1p ) *(1.0/d1);
Tensor calM2 = ( tempI + (CinvCinv_ICinv -Cm1M2M2Cm1)*(J*J/(lambda2*lambda2)) + dM2M2d*(lambda2*lambda2) - M2M2*d2p ) *(1.0/d2);
Tensor calM3 = ( tempI + (CinvCinv_ICinv -Cm1M3M3Cm1)*(J*J/(lambda3*lambda3)) + dM3M3d*(lambda3*lambda3) - M3M3*d3p ) *(1.0/d3);
 
Tensor L_iso_1 = ( calM1*Wa(0) + calM2*Wa(1) + calM3*Wa(2) ) * 2.0;
Tensor L_iso_2 = M1("ij") * M1("kl") * yab.cval(1,1) + M1("ij") * M2("kl") * yab.cval(1,2) + M1("ij") * M3("kl") * yab.cval(1,3) +
M2("ij") * M1("kl") * yab.cval(2,1) + M2("ij") * M2("kl") * yab.cval(2,2) + M2("ij") * M3("kl") * yab.cval(2,3) +
M3("ij") * M1("kl") * yab.cval(3,1) + M3("ij") * M2("kl") * yab.cval(3,2) + M3("ij") * M3("kl") * yab.cval(3,3);
L_iso = L_iso_1 + L_iso_2 ;
}
 
if(caseIndex == 11)
{
double d1 = (lambda1+lambda2)*(lambda1+lambda3)*(lambda1-lambda2)*(lambda1-lambda3);
Tensor M1 = (I_ij - Cinv * (lambda2*lambda2)) * (1.0/(lambda1+lambda2)/(lambda1-lambda2));
Tensor Mr = Cinv - M1;
double d1p = 4.0 *lambda1*lambda1*lambda1*lambda1 - I1*lambda1*lambda1 - J*J /(lambda1*lambda1);
Tensor Cm1M1M1Cm1 = Cinv("ij")*M1("kl") + M1("ij")*Cinv("kl");
Cinv.null_indices(); M1.null_indices(); Cm1M1M1Cm1.null_indices();
Tensor dM1M1d = I_ij("ij")*M1("kl") + M1("ij")*I_ij("kl");
I_ij.null_indices(); M1.null_indices(); dM1M1d.null_indices();
Tensor M1M1 = M1("ij") * M1("kl");
M1.null_indices(); M1M1.null_indices();
Tensor calM1 = ( tempI + (CinvCinv_ICinv -Cm1M1M1Cm1)*(J*J/(lambda1*lambda1)) + dM1M1d*(lambda1*lambda1) - M1M1*d1p ) *(1.0/d1);
Tensor calMr = (ICinv + calM1) * (-1.0);
Tensor L_iso_1 = ( calM1*Wa(0) + calMr*Wa(2) ) * 2.0;
Tensor L_iso_2 = M1("ij") * M1("kl") * yab.cval(1,1) + M1("ij") * Mr("kl") * yab.cval(1,3) +
Mr("ij") * M1("kl") * yab.cval(3,1) + Mr("ij") * Mr("kl") * yab.cval(3,3);
L_iso = L_iso_1 + L_iso_2 ;
}
 
if(caseIndex == 13)
{
double d3 = (lambda3+lambda1)*(lambda3+lambda2)*(lambda3-lambda1)*(lambda3-lambda2);
Tensor M3 = (I_ij - Cinv * (lambda2*lambda2)) * (1.0/(lambda3+lambda2)/(lambda3-lambda2));
Tensor Mr = Cinv - M3;
double d3p = 4.0 *lambda3*lambda3*lambda3*lambda3 - I1*lambda3*lambda3 - J*J /(lambda3*lambda3);
Tensor Cm1M3M3Cm1 = Cinv("ij")*M3("kl") + M3("ij")*Cinv("kl");
Cinv.null_indices(); M3.null_indices(); Cm1M3M3Cm1.null_indices();
Tensor dM3M3d = I_ij("ij")*M3("kl") + M3("ij")*I_ij("kl");
I_ij.null_indices(); M3.null_indices(); dM3M3d.null_indices();
Tensor M3M3 = M3("ij") * M3("kl");
M3.null_indices(); M3M3.null_indices();
Tensor calM3 = ( tempI + (CinvCinv_ICinv -Cm1M3M3Cm1)*(J*J/(lambda3*lambda3)) + dM3M3d*(lambda3*lambda3) - M3M3*d3p ) *(1.0/d3);
Tensor calMr = (ICinv + calM3) * (-1.0);
Tensor L_iso_1 = ( calM3*Wa(2) + calMr*Wa(0) ) * 2.0;
Tensor L_iso_2 = M3("ij") * M3("kl") * yab.cval(3,3) + M3("ij") * Mr("kl") * yab.cval(3,1) +
Mr("ij") * M3("kl") * yab.cval(1,3) + Mr("ij") * Mr("kl") * yab.cval(1,1);
L_iso = L_iso_1 + L_iso_2 ;
}
 
if(caseIndex == 2)
{
Vector lambda_wave(3);
lambda_wave = this->getlambda_wave();
Vector d11 = W->d2isowOdlambda2(lambda_wave);
Vector d1 = W->disowOdlambda(lambda_wave);
double G2linear = d11(1)*lambda_wave2*lambda_wave2 + d1(1)*lambda_wave2;
 
L_iso = ( ICinv - CinvCinv * (1.0/3.0) ) * G2linear;
}
 
return L_iso;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor FDdecoupledElastic3D::FDvolStiffness(void)
{
Tensor CinvCinv = Cinv("ij")*Cinv("kl") ;
Cinv.null_indices(); CinvCinv.null_indices();
Tensor ICinv = ( CinvCinv.transpose0110() + CinvCinv.transpose0111() ) * (0.5);
double dWdJ = W->dvolwOdJ(J);
double d2WdJ2 = W->d2volwOdJ2(J);
double wj = d2WdJ2*J*J + J*dWdJ;
 
Tensor L_vol = CinvCinv*wj - ICinv *2.0*J*dWdJ ;
 
return L_vol;
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor& FDdecoupledElastic3D::getTangentTensor(void)
{
return Stiffness;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor
&FDdecoupledElastic3D::getInitialTangentTensor(void)
{
//tensor I2("I", 2, def_dim_2);
//tensor I_ijkl = I2("ij")*I2("kl");
//tensor I_ikjl = I_ijkl.transpose0110();
//tensor I_iljk = I_ijkl.transpose0111();
//tensor I4s = (I_ikjl+I_iljk)*0.5;
//static tensor L0;
//L0 = I_ijkl*( E*nu / ( (1.0+nu)*(1.0 - 2.0*nu) ) ) + I4s*( E / (1.0 + nu) );
 
//return L0;
return this->getTangentTensor();
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const straintensor FDdecoupledElastic3D::getStrainTensor(void)
{
return thisGreenStrain;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const stresstensor FDdecoupledElastic3D::getStressTensor(void)
{
return thisPK2Stress;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const stresstensor FDdecoupledElastic3D::getPK1StressTensor(void)
{
stresstensor thisSPKStress;
stresstensor thisFPKStress;
 
if ( FromForC == 0 ) {
thisSPKStress = this->getStressTensor();
thisFPKStress = thisSPKStress("ij") * (F.transpose11())("jk") ;
}
 
if ( FromForC == 1 ) {
opserr << "FDdecoupledElastic3D: unknown deformation gradient - cannot compute PK1 stress" << "\n";
exit (-1);
}
 
return thisFPKStress;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const stresstensor FDdecoupledElastic3D::getCauchyStressTensor(void)
{
stresstensor thisSPKStress;
stresstensor thisCauchyStress;
 
if ( FromForC == 0 ) {
thisSPKStress = this->getStressTensor();
thisCauchyStress = F("ij") * thisSPKStress("jk") * (F.transpose11())("kl") * (1.0/J);
}
 
if ( FromForC == 1 ) {
opserr << "FDdecoupledElastic3D: unknown deformation gradient - cannot compute Cauchy stress" << "\n";
exit (-1);
}
 
return thisCauchyStress;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::commitState (void)
{
return 0;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::revertToLastCommit (void)
{
return 0;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::revertToStart (void)
{
Tensor F0("I", 2, def_dim_2);
F = F0;
C = F0;
Cinv = F0;
 
Tensor ss_zero(2,def_dim_2,0.0);
thisPK2Stress = ss_zero;
thisGreenStrain = ss_zero;
Stiffness = getInitialTangentTensor();
 
J = 1.0;
lambda1 = 1.0;
lambda2 = 1.0;
lambda3 = 1.0;
lambda_wave1 = 1.0;
lambda_wave2 = 1.0;
lambda_wave3 = 1.0;
 
caseIndex = 0;
 
return 0;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NDMaterial * FDdecoupledElastic3D::getCopy (void)
{
FDdecoupledElastic3D *theCopy =
new FDdecoupledElastic3D (this->getTag(), this->getWEnergy(), this->getRho());
 
theCopy->F = F;
theCopy->C = C;
theCopy->Cinv = Cinv;
theCopy->J = J;
theCopy->lambda1 = lambda1;
theCopy->lambda2 = lambda2;
theCopy->lambda3 = lambda3;
theCopy->lambda_wave1 = lambda_wave1;
theCopy->lambda_wave2 = lambda_wave2;
theCopy->lambda_wave3 = lambda_wave3;
 
theCopy->Stiffness = Stiffness;
theCopy->thisGreenStrain = thisGreenStrain;
theCopy->thisPK2Stress = thisPK2Stress;
 
return theCopy;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NDMaterial * FDdecoupledElastic3D::getCopy (const char *type)
{
 
opserr << "FDdecoupledElastic3D::getCopy(const char *) - not yet implemented\n";
 
return 0;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const char* FDdecoupledElastic3D::getType (void) const
{
return "ThreeDimentionalFD";
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::getOrder (void) const
{
return 6;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::sendSelf (int commitTag, Channel &theChannel)
{
int res = 0;
 
static Vector data(2);
 
data(0) = this->getTag();
data(1) = rho;
 
res += theChannel.sendVector(this->getDbTag(), commitTag, data);
if (res < 0)
{
opserr << "FDdecoupledElastic3D::sendSelf -- could not send Vector\n";
return res;
}
 
return res;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::recvSelf (int commitTag,
Channel &theChannel,
FEM_ObjectBroker &theBroker)
{
int res = 0;
 
static Vector data(2);
 
res += theChannel.recvVector(this->getDbTag(), commitTag, data);
if (res < 0)
{
opserr << "FDdecoupledElastic3D::recvSelf -- could not recv Vector\n";
return res;
}
 
this->setTag((int)data(0));
rho = data(1);
 
return res;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void FDdecoupledElastic3D::Print (OPS_Stream &s, int flag)
{
s << "Finite Deformation Elastic 3D model" << endln;
s << "\trho: " << rho << endln;
return;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//int FDdecoupledElastic3D::setParameter(char **argv, int argc, Information &info)
//{
// return -1;
//}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//int FDdecoupledElastic3D::updateParameter(int parameterID, Information &info)
//{
// return -1;
//}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::ComputeTrials()
{
// Cinv:
Cinv = C.inverse();
Cinv.symmetrize11();
 
// J:
J = sqrt(C.determinant());
 
// lambda:
tensor eigtensor = C.eigenvalues();
lambda1 = sqrt(eigtensor.cval(1));
lambda2 = sqrt(eigtensor.cval(2));
lambda3 = sqrt(eigtensor.cval(3));
 
// lambda_wave
double JJJ = pow(J, -0.33333333333333333333333333333);
lambda_wave1 = lambda1 *JJJ;
lambda_wave2 = lambda2 *JJJ;
lambda_wave3 = lambda3 *JJJ;
 
// caseIndex, note lambda1 >= lambda2 >= lambda3 implied by C.eigenvalues()
double diff12 = fabs(lambda1-lambda2);
double diff23 = fabs(lambda2-lambda3);
double perturbation = pow( d_macheps(), (0.4) );
if ( diff12 >= perturbation && diff23 >= perturbation )
caseIndex = 0;
else if (diff12 >= perturbation && diff23 < perturbation )
caseIndex = 11;
else if (diff12 < perturbation && diff23 >= perturbation )
caseIndex = 13;
else if (diff12 < perturbation && diff23 < perturbation )
caseIndex = 2;
else {opserr << "FDdecoupledElastic3D::getCaseIndex -- unknown case! \n";
exit (-1);}
 
Tensor I_ij("I", 2, def_dim_2);
 
Tensor isoPK2Stress(2, def_dim_2, 0.0);
 
Vector Wa = this->wa();
 
double I1 = lambda1*lambda1+lambda2*lambda2+lambda3*lambda3;
 
if (caseIndex == 0)
{
double d1 = (lambda1+lambda2)*(lambda1+lambda3)*(lambda1-lambda2)*(lambda1-lambda3);
double d2 = (lambda2+lambda3)*(lambda2+lambda1)*(lambda2-lambda3)*(lambda2-lambda1);
double d3 = (lambda3+lambda1)*(lambda3+lambda2)*(lambda3-lambda1)*(lambda3-lambda2);
 
Tensor M1 = ( C - I_ij*(I1-lambda1*lambda1) + Cinv *(J*J/(lambda1*lambda1)) ) * (1.0/d1);
Tensor M2 = ( C - I_ij*(I1-lambda2*lambda2) + Cinv *(J*J/(lambda2*lambda2)) ) * (1.0/d2);
Tensor M3 = ( C - I_ij*(I1-lambda3*lambda3) + Cinv *(J*J/(lambda3*lambda3)) ) * (1.0/d3);
 
isoPK2Stress = M1*Wa(0) + M2*Wa(1) + M3*Wa(2);
}
 
if (caseIndex == 11)
{
Tensor M1 = (I_ij - Cinv * (lambda2*lambda2)) * (1.0/(lambda1+lambda2)/(lambda1-lambda2));
Tensor Mr = Cinv - M1;
isoPK2Stress = Mr*Wa(2) + M1*Wa(0);
}
 
if (caseIndex == 13)
{
Tensor M3 = (I_ij - Cinv * (lambda2*lambda2)) * (1.0/(lambda3+lambda2)/(lambda3-lambda2));
Tensor Mr = Cinv - M3;
isoPK2Stress = Mr*Wa(0) + M3*Wa(2);
}
 
if (caseIndex == 2)
{
 
}
 
double dWdJ = W->dvolwOdJ(J);
Tensor volPK2Stress = Cinv * J * dWdJ;
 
thisPK2Stress = volPK2Stress + isoPK2Stress; // This is PK2Stress
 
thisGreenStrain = (C - I_ij) * 0.5; // This is Green Strain
 
Tensor L_iso = this->FDisoStiffness();
Tensor L_vol = this->FDvolStiffness();
Stiffness = L_iso + L_vol; // This is Langrangian Tangent Stiffness
 
return 0;
}
//--------------------------------------------------------------------------------------------------------------------------------------
int FDdecoupledElastic3D::getCaseIndex()
{
return caseIndex;
}
 
 
/trunk/SRC/material/nD/FiniteDeformation/FDEPState.cpp
New file
0,0 → 1,273
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
#ifndef FDEPState_CPP
#define FDEPState_CPP
 
#include "FDEPState.h"
 
//-------------------------------------------------------------------------------
// Normal Constructor 00
//-------------------------------------------------------------------------------
FDEPState::FDEPState ()
{
int err;
err = this->revertToStart();
}
 
//-------------------------------------------------------------------------------
// Normal Constructor 01
//-------------------------------------------------------------------------------
FDEPState::FDEPState ( const straintensor& xFpInVar,
double xStressLikeInVar,
double xStrainLikeInVar,
const stresstensor& xStressLikeKiVar,
const straintensor& xStrainLikeKiVar,
//
const straintensor& xCommitedFpInVar,
double xCommitedStressLikeInVar,
double xCommitedStrainLikeInVar,
const stresstensor& xCommitedStressLikeKiVar,
const straintensor& xCommitedStrainLikeKiVar )
{
FpInVar = xFpInVar;
StressLikeInVar = xStressLikeInVar;
StrainLikeInVar = xStrainLikeInVar;
StressLikeKiVar = xStressLikeKiVar;
StrainLikeKiVar = xStrainLikeKiVar;
//
CommitedFpInVar = xCommitedFpInVar;
CommitedStressLikeInVar = xCommitedStressLikeInVar;
CommitedStrainLikeInVar = xCommitedStrainLikeInVar;
CommitedStressLikeKiVar = xCommitedStressLikeKiVar;
CommitedStrainLikeKiVar = xCommitedStrainLikeKiVar;
}
 
//-------------------------------------------------------------------------------
// Destructor
//-------------------------------------------------------------------------------
FDEPState::~FDEPState ()
{
 
}
 
//------------------------------------------------------------------------------
FDEPState *FDEPState::newObj ()
{
FDEPState *fdeps = new FDEPState ();
return fdeps;
}
 
//------------------------------------------------------------------------------
FDEPState::FDEPState( const FDEPState& fds )
{
setFpInVar(fds.getFpInVar());
setStressLikeInVar(fds.getStressLikeInVar());
setStrainLikeInVar(fds.getStrainLikeInVar());
setStressLikeKiVar(fds.getStressLikeKiVar());
setStrainLikeKiVar(fds.getStrainLikeKiVar());
//
setCommitedFpInVar(fds.getCommitedFpInVar());
setCommitedStressLikeInVar(fds.getCommitedStressLikeInVar());
setCommitedStrainLikeInVar(fds.getCommitedStrainLikeInVar());
setCommitedStressLikeKiVar(fds.getCommitedStressLikeKiVar());
setCommitedStrainLikeKiVar(fds.getCommitedStrainLikeKiVar());
}
 
// Get member variables
//------------------------------------------------------------------------------
straintensor FDEPState::getFpInVar() const
{
return FpInVar;
}
 
//------------------------------------------------------------------------------
double FDEPState::getStrainLikeInVar() const
{
return StrainLikeInVar;
}
 
//------------------------------------------------------------------------------
double FDEPState::getStressLikeInVar() const
{
return StressLikeInVar;
}
 
//------------------------------------------------------------------------------
straintensor FDEPState::getStrainLikeKiVar() const
{
return StrainLikeKiVar;
}
 
//------------------------------------------------------------------------------
stresstensor FDEPState::getStressLikeKiVar() const
{
return StressLikeKiVar;
}
 
//------------------------------------------------------------------------------
straintensor FDEPState::getCommitedFpInVar() const
{
return CommitedFpInVar;
}
 
//------------------------------------------------------------------------------
double FDEPState::getCommitedStrainLikeInVar() const
{
return CommitedStrainLikeInVar;
}
 
//------------------------------------------------------------------------------
double FDEPState::getCommitedStressLikeInVar() const
{
return CommitedStressLikeInVar;
}
 
//------------------------------------------------------------------------------
straintensor FDEPState::getCommitedStrainLikeKiVar() const
{
return CommitedStrainLikeKiVar;
}
 
//------------------------------------------------------------------------------
stresstensor FDEPState::getCommitedStressLikeKiVar() const
{
return CommitedStressLikeKiVar;
}
 
// Set member variables
//---------------------------------------------------------------------------
void FDEPState::setFpInVar(const straintensor &xFpInVar)
{
this->FpInVar = xFpInVar;
}
 
//---------------------------------------------------------------------------
void FDEPState::setStrainLikeInVar(double xStrainLikeInVar)
{
this->StrainLikeInVar = xStrainLikeInVar;
}
 
//---------------------------------------------------------------------------
void FDEPState::setStressLikeInVar(double xStressLikeInVar)
{
this->StressLikeInVar = xStressLikeInVar;
}
 
//---------------------------------------------------------------------------
void FDEPState::setStrainLikeKiVar(const straintensor& xStrainLikeKiVar)
{
this->StrainLikeKiVar = xStrainLikeKiVar;
}
 
//---------------------------------------------------------------------------
void FDEPState::setStressLikeKiVar(const stresstensor& xStressLikeKiVar)
{
this->StressLikeKiVar = xStressLikeKiVar;
}
 
//---------------------------------------------------------------------------
void FDEPState::setCommitedFpInVar(const straintensor &xCommitedFpInVar)
{
this->CommitedFpInVar = xCommitedFpInVar;
}
 
//---------------------------------------------------------------------------
void FDEPState::setCommitedStrainLikeInVar(double xCommitedStrainLikeInVar)
{
this->CommitedStrainLikeInVar = xCommitedStrainLikeInVar;
}
 
//---------------------------------------------------------------------------
void FDEPState::setCommitedStressLikeInVar(double xCommitedStressLikeInVar)
{
this->CommitedStressLikeInVar = xCommitedStressLikeInVar;
}
 
//---------------------------------------------------------------------------
void FDEPState::setCommitedStrainLikeKiVar(const straintensor& xCommitedStrainLikeKiVar)
{
this->CommitedStrainLikeKiVar = xCommitedStrainLikeKiVar;
}
 
//---------------------------------------------------------------------------
void FDEPState::setCommitedStressLikeKiVar(const stresstensor& xCommitedStressLikeKiVar)
{
this->CommitedStressLikeKiVar = xCommitedStressLikeKiVar;
}
 
//----------------------------------------------------------------------
int FDEPState::commitState(void)
{
CommitedFpInVar = FpInVar;
CommitedStressLikeInVar = StressLikeInVar;
CommitedStrainLikeInVar = StrainLikeInVar;
CommitedStressLikeKiVar = StressLikeKiVar;
CommitedStrainLikeKiVar = StrainLikeKiVar;
 
return 0;
}
 
//----------------------------------------------------------------------
int FDEPState::revertToLastCommit(void)
{
FpInVar = CommitedFpInVar;
StressLikeInVar = CommitedStressLikeInVar;
StrainLikeInVar = CommitedStrainLikeInVar;
StressLikeKiVar = CommitedStressLikeKiVar;
StrainLikeKiVar = CommitedStrainLikeKiVar;
 
return 0;
}
 
//----------------------------------------------------------------------
int FDEPState::revertToStart(void)
{
tensor tI2("I", 2, def_dim_2);
tensor t00(2, def_dim_2, 0.0);
 
FpInVar = tI2;
StressLikeInVar = 0.0;
StrainLikeInVar = 0.0;
StressLikeKiVar = t00;
StrainLikeKiVar = t00;
 
CommitedFpInVar = tI2;
CommitedStressLikeInVar = 0.0;
CommitedStrainLikeInVar = 0.0;
CommitedStressLikeKiVar = t00;
CommitedStrainLikeKiVar = t00;
 
return 0;
}
 
# endif
 
 
 
 
 
 
 
/trunk/SRC/material/nD/FiniteDeformation/LogWEnergy.cpp
21,8 → 21,8
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY: Sept 2003
//# 28May2004
//#
//#
//===============================================================================
 
#ifndef LogWEnergy_CPP
33,27 → 33,16
//================================================================================
// Normal constructor
//================================================================================
LogWEnergy::LogWEnergy(double E_in, double nu_in )
LogWEnergy::LogWEnergy(double K_in, double G_in ) :K(K_in), G(G_in)
{
E = E_in;
nu = nu_in;
if (nu != -1.0)
G = 0.5*E/(1.0+nu);
else
opserr << "Poisson's ratio = -1.0, not permited for this model (LogWEnergy)";
if (nu != 0.5)
K = 0.33333333333333*E/(1.0-2.0*nu);
else
opserr << "Poisson's ratio = 0.5, not permited for this model (LogWEnergy)";
// K = 1.0e20;
 
}
 
//LogWEnergy::LogWEnergy( )
//{
//
//}
LogWEnergy::LogWEnergy( ) :K(0.0), G(0.0)
{
 
}
 
//================================================================================
// Normal destructor
//================================================================================
67,20 → 56,10
//================================================================================
WEnergy * LogWEnergy::newObj( )
{
LogWEnergy *new_WEnergy = new LogWEnergy( E, nu);
LogWEnergy *new_WEnergy = new LogWEnergy(K, G);
return new_WEnergy;
}
 
const double LogWEnergy::getE()
{
return E;
}
 
const double LogWEnergy::getnu()
{
return nu;
}
 
//================================================================================
// w
//================================================================================
140,5 → 119,6
return d2colwOverdJ2;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/TclFiniteDeformationEP3DCommand.cpp
New file
0,0 → 1,393
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
 
#include <stdlib.h>
#include <string.h>
 
#include <Domain.h>
 
#include <ErrorHandler.h>
#include <TclModelBuilder.h>
 
#include <NDMaterial.h>
#include <FiniteDeformationEP3D.h>
#include <FiniteDeformationElastic3D.h>
 
#include <fdYield.h>
#include <fdYieldVM.h>
#include <fdYieldDP.h>
 
#include <fdFlow.h>
#include <fdFlowVM.h>
#include <fdFlowDP.h>
 
#include <fdEvolution_S.h>
#include <fdEvolution_SLS.h>
 
#include <fdEvolution_T.h>
#include <fdEvolution_TL.h>
 
 
// the functions to create the component objects (defined at eof)
fdYield *EvaluatefdYield(ClientData, Tcl_Interp *, TCL_Char *tclString);
fdFlow *EvaluatefdFlow(ClientData, Tcl_Interp *, TCL_Char *tclString);
fdEvolution_S *EvaluatefdEvolution_S(ClientData, Tcl_Interp *, TCL_Char *tclString);
fdEvolution_T *EvaluatefdEvolution_T(ClientData, Tcl_Interp *, TCL_Char *tclString);
 
 
static void cleanup(TCL_Char **argv) {
Tcl_Free((char *) argv);
}
 
 
//**************************************************************************************
//**************************************************************************************
FiniteDeformationEP3D *
TclModelBuilder_addFiniteDeformationEP3D(ClientData clientData, Tcl_Interp *interp, int argc,
TCL_Char **argv, TclModelBuilder *theTclBuilder, int eleArgStart)
{
int tag = 0;
int tagElasticFD = 0;
fdYield *fdY = 0;
fdFlow *fdF = 0;
fdEvolution_S *fdES = 0;
fdEvolution_T *fdET = 0;
 
NDMaterial *matFDElastic = 0;
 
int loc = eleArgStart;
 
if (Tcl_GetInt(interp, argv[loc++], &tag) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid tag " << argv[loc] << "\n";
exit (-1);
}
 
if (Tcl_GetInt(interp, argv[loc++], &tagElasticFD) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid elastic material tag " << argv[loc] << "\n";
exit (-1);
}
 
if (tagElasticFD == tag) {
opserr << "Error: nDMaterial FDEP3D, elastic matTag is the same with FDEP3D matTag" << argv[loc] << "\n";
exit (-1);
}
 
matFDElastic = theTclBuilder->getNDMaterial(tagElasticFD);
if (tagElasticFD == 0) {
opserr << "WARNING: nD FD elastic material does not exist\n";
opserr << "nD FD material: " << tagElasticFD;
opserr << "\n FDEP3D nDMaterial: " << tag << "\n";
exit (-1);
}
 
while (loc < argc) {
 
if ((strcmp(argv[loc],"-fdYield") == 0) || (strcmp(argv[loc],"-fdY") == 0)) {
fdY = EvaluatefdYield(clientData, interp, argv[loc+1]);
if (fdY == 0) {
opserr << "Warning: nDMaterial FDEP3D - could not create a fdYield from" << argv[loc+1] << "\n";
exit (-1);
}
}
 
else if ((strcmp(argv[loc],"-fdFlow") == 0) || (strcmp(argv[loc],"-fdF") == 0)) {
fdF = EvaluatefdFlow(clientData, interp, argv[loc+1]);
if (fdF == 0) {
opserr << "Warning: nDMaterial FDEP3D - could not create a fdFlow from" << argv[loc+1] << "\n";
exit (-1);
}
}
 
else if ((strcmp(argv[loc],"-fdEvolution_S") == 0) || (strcmp(argv[loc],"-fdES") == 0)) {
fdES = EvaluatefdEvolution_S(clientData, interp, argv[loc+1]);
if (fdES == 0) {
opserr << "Warning: nDMaterial FDEP3D - could not create a fdES from" << argv[loc+1] << "\n";
exit (-1);
}
}
 
else if ((strcmp(argv[loc],"-fdEvolution_T") == 0) || (strcmp(argv[loc],"-fdET") == 0)) {
fdET = EvaluatefdEvolution_T(clientData, interp, argv[loc+1]);
if (fdET == 0) {
opserr << "Warning: nDMaterial FDEP3D - could not create a fdET from" << argv[loc+1] << "\n";
exit (-1);
}
}
 
else {
opserr << "Warning: nDMaterial FDEP3D - don't understand %s\n";
exit (-1);
}
 
// increment locator by 2 and do next one
loc += 2;
}
 
FiniteDeformationEP3D *theMaterial = 0;
 
if ( (fdY != 0) && (fdF != 0) && (fdES != 0) && (fdET != 0) && (matFDElastic != 0) )
theMaterial = new FiniteDeformationEP3D(tag, matFDElastic, fdY, fdF, fdES, fdET);
else if ( (fdY != 0) && (fdF != 0) && (fdES != 0) && (fdET == 0) && (matFDElastic != 0) )
theMaterial = new FiniteDeformationEP3D(tag, matFDElastic, fdY, fdF, fdES);
else if ( (fdY != 0) && (fdF != 0) && (fdES == 0) && (fdET != 0) && (matFDElastic != 0) )
theMaterial = new FiniteDeformationEP3D(tag, matFDElastic, fdY, fdF, fdET);
else if ( (fdY != 0) && (fdF != 0) && (fdES == 0) && (fdET == 0) && (matFDElastic != 0) )
theMaterial = new FiniteDeformationEP3D(tag, matFDElastic, fdY, fdF);
else
opserr << "Warning: invalid args used to create a FiniteDeformationEP3D material\n";
 
return theMaterial;
}
 
 
//**************************************************************************************
//**************************************************************************************
// Function - to create a FD Yield Surface
fdYield *EvaluatefdYield(ClientData clientData, Tcl_Interp *interp, TCL_Char *tclString)
{
int argc;
TCL_Char **argv;
 
// split the list
if (Tcl_SplitList(interp, tclString, &argc, &argv) != TCL_OK) {
exit (-1);
}
 
if (argc == 0)
exit (-1);
 
// now parse the list & construct the required object
fdYield *fdY = 0;
 
// 1. von Mises fd Yield Surface
//
if ((strcmp(argv[0],"-VM") == 0) || (strcmp(argv[0],"-vM") == 0) || (strcmp(argv[0],"-J2") == 0)) {
double Y0 = 0.0;
 
if (argc == 2) {
if (Tcl_GetDouble(interp, argv[1], &Y0) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid Y0 " << argv[1] << "\n";
exit (-1);
}
}
 
fdY = new fdYieldVM(Y0);
}
 
// 2. Druke-Prager fd Yield Surface
//
else if ((strcmp(argv[0],"-DP") == 0) || (strcmp(argv[0],"-dp") == 0) ) {
double FrictionAng_in = 0.0;
double Cohension_in = 0.0;
int ConeIndex_in = 0;
 
if (argc >= 3) {
if (Tcl_GetDouble(interp, argv[1], &FrictionAng_in) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid Friction Angle " << argv[1] << "\n";
exit (-1);
}
if (Tcl_GetDouble(interp, argv[2], &Cohension_in) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid Conhension " << argv[2] << "\n";
exit (-1);
}
}
 
if (argc == 4) {
if (Tcl_GetInt(interp, argv[3], &ConeIndex_in) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid Cone Index " << argv[1] << "\n";
exit (-1);
}
}
 
fdY = new fdYieldDP(FrictionAng_in, Cohension_in, ConeIndex_in);
}
 
else {
opserr << "Warning: invalid fd yield function: " << argv[0] << "\n";
exit (-1);
}
 
cleanup(argv);
return fdY;
}
 
 
//**************************************************************************************
//**************************************************************************************
// Function - to create a FD Flow Rule
fdFlow *EvaluatefdFlow(ClientData clientData, Tcl_Interp *interp, TCL_Char *tclString)
{
int argc;
TCL_Char **argv;
 
// split the list
if (Tcl_SplitList(interp, tclString, &argc, &argv) != TCL_OK) {
exit (-1);
}
 
if (argc == 0)
exit (-1);
 
fdFlow *fdF = 0;
 
// 1. von Mises fd Yield Surface
//
if ((strcmp(argv[0],"-VM") == 0) || (strcmp(argv[0],"-vM") == 0) || (strcmp(argv[0],"-J2") == 0)) {
double Y0 = 0.0;
 
if (argc == 2) {
if (Tcl_GetDouble(interp, argv[1], &Y0) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid Y0 " << argv[1] << "\n";
exit (-1);
}
}
 
fdF = new fdFlowVM(Y0);
}
 
// 2. Druke-Prager fd Flow Rule
//
else if ((strcmp(argv[0],"-DP") == 0) || (strcmp(argv[0],"-dp") == 0) ) {
double DilatedAngle_in = 0.0;
int ConeIndex_in = 0;
 
if (argc >= 2) {
if (Tcl_GetDouble(interp, argv[1], &DilatedAngle_in) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid Dilated Angle " << argv[1] << "\n";
exit (-1);
}
}
 
if (argc == 3) {
if (Tcl_GetInt(interp, argv[2], &ConeIndex_in) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid Cone Index " << argv[2] << "\n";
exit (-1);
}
}
 
fdF = new fdFlowDP(DilatedAngle_in, ConeIndex_in);
}
 
else {
opserr << "Warning: invalid fd flow rule: " << argv[0] << "\n";
exit (-1);
}
 
cleanup(argv);
return fdF;
}
 
 
//**************************************************************************************
//**************************************************************************************
// Function - to create an fd EvolutionLaw_S object
fdEvolution_S *EvaluatefdEvolution_S(ClientData clientData, Tcl_Interp *interp, TCL_Char *tclString)
{
int argc;
TCL_Char **argv;
 
// split the list
if (Tcl_SplitList(interp, tclString, &argc, &argv) != TCL_OK) {
exit (-1);
}
 
fdEvolution_S *fdES = 0;
 
//1. Linear and Saturation isotropic (scalar) evolution law:
//
if ((strcmp(argv[0],"-LS") == 0) || (strcmp(argv[0],"-LinearSaturated") == 0)) {
 
double H_linear = 0.0;
double q_saturated = 0.0;
double beta = 0.0;
 
if (argc >= 2) {
if (Tcl_GetDouble(interp, argv[1], &H_linear) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid H_linear " << argv[1] << "\n";
cleanup(argv);
exit (-1);
}
}
if (argc >= 4) {
if (Tcl_GetDouble(interp, argv[2], &q_saturated) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid q_saturated " << argv[2] << "\n";
cleanup(argv);
exit (-1);
}
if (Tcl_GetDouble(interp, argv[3], &beta) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid beta " << argv[3] << "\n";
cleanup(argv);
exit (-1);
}
}
fdES = new fdEvolution_SLS(H_linear, q_saturated, beta);
}
cleanup(argv);
return fdES;
}
 
//**************************************************************************************
//**************************************************************************************
// Function - to create an fd EvolutionLaw_T object
fdEvolution_T *EvaluatefdEvolution_T(ClientData clientData, Tcl_Interp *interp, TCL_Char *tclString)
{
int argc;
TCL_Char **argv;
 
// split the list
if (Tcl_SplitList(interp, tclString, &argc, &argv) != TCL_OK) {
exit (-1);
}
 
fdEvolution_T *fdET = 0;
 
//1. Linear kinematic (tensor) evolution law:
//
if ((strcmp(argv[0],"-Linear") == 0) ) {
 
double H_linear = 0.0;
 
if (argc >= 2) {
if (Tcl_GetDouble(interp, argv[1], &H_linear) != TCL_OK) {
opserr << "Warning: nDMaterial FDEP3D - invalid H_linear " << argv[1] << "\n";
cleanup(argv);
exit (-1);
}
}
fdET = new fdEvolution_TL(H_linear);
}
cleanup(argv);
return fdET;
}
 
 
/trunk/SRC/material/nD/FiniteDeformation/NeoHookeanCompressible3D.cpp
New file
0,0 → 1,321
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
// the traditional neo-Hookean hyperelasticity:
// w = 0.5*lambda*(lnJ)^2 - G*(lnJ) + 0.5*G*(trace(C)-3)
 
#include <NeoHookeanCompressible3D.h>
 
//-----------------------------------------------------------------------------------------------------------------------------------------------
NeoHookeanCompressible3D::NeoHookeanCompressible3D(int tag,
int classTag,
double K_in,
double G_in,
double rho_in = 0.0)
:FiniteDeformationElastic3D(tag, classTag, rho_in), K(K_in), G(G_in)
{
 
}
 
//-----------------------------------------------------------------------------------------------------------------------------------------------
NeoHookeanCompressible3D::NeoHookeanCompressible3D(int tag,
double K_in,
double G_in,
double rho_in = 0.0)
:FiniteDeformationElastic3D(tag, ND_TAG_NeoHookeanCompressible3D, rho_in), K(K_in), G(G_in)
{
 
}
 
//------------------------------------------------------------------------------------------------------------------------------------------------
NeoHookeanCompressible3D::NeoHookeanCompressible3D( )
:FiniteDeformationElastic3D(0, 0, 0.0), K(0.0), G(0.0)
{
 
}
 
//------------------------------------------------------------------------------------------------------------------------------------------------
NeoHookeanCompressible3D::~NeoHookeanCompressible3D()
{
 
}
 
//-------------------------------------------------------------------------------------------------------------------------------------------------
double NeoHookeanCompressible3D::getRho(void)
{
return rho;
}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::setTrialF(const straintensor &f)
{
FromForC = 0;
F = f;
C = F("ki")*F("kj"); C.null_indices();
return this->ComputeTrials();
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::setTrialFIncr(const straintensor &df)
{
return this->setTrialF(this->getF() + df);
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::setTrialC(const straintensor &c)
{
FromForC = 1;
C = c;
return this->ComputeTrials();
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::setTrialCIncr(const straintensor &dc)
{
return this->setTrialC(this->getC() + dc);
}
 
//-----------------------------------------------------------------------------------------------------------------------------------------------------
const straintensor NeoHookeanCompressible3D::getF(void)
{
return F;
}
 
//-----------------------------------------------------------------------------------------------------------------------------------------------------
const straintensor NeoHookeanCompressible3D::getC(void)
{
return C;
}
 
////------------------------------------------------------------------------------------------------------------------------------------------------------
//const double NeoHookeanCompressible3D::getJ(void)
//{
// return J;
//}
 
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor& NeoHookeanCompressible3D::getTangentTensor(void)
{
return Stiffness;
}
 
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor
&NeoHookeanCompressible3D::getInitialTangentTensor(void)
{
return this->getTangentTensor();
}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const straintensor NeoHookeanCompressible3D::getStrainTensor(void)
{
return thisGreenStrain;
}
 
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const stresstensor NeoHookeanCompressible3D::getStressTensor(void)
{
return thisPK2Stress;
}
 
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const stresstensor NeoHookeanCompressible3D::getPK1StressTensor(void)
{
stresstensor thisSPKStress;
stresstensor thisFPKStress;
 
if ( FromForC == 0 ) {
thisSPKStress = this->getStressTensor();
thisFPKStress = thisSPKStress("ij") * (F.transpose11())("jk") ;
}
 
if ( FromForC == 1 ) {
opserr << "NeoHookeanCompressible3D: unknown deformation gradient - cannot compute PK1 stress" << "\n";
exit (-1);
}
 
return thisFPKStress;
}
 
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const stresstensor NeoHookeanCompressible3D::getCauchyStressTensor(void)
{
stresstensor thisSPKStress;
stresstensor thisCauchyStress;
 
if ( FromForC == 0 ) {
thisSPKStress = this->getStressTensor();
thisCauchyStress = F("ij") * thisSPKStress("jk") * (F.transpose11())("kl") * (1.0/J);
}
 
if ( FromForC == 1 ) {
opserr << "NeoHookeanCompressible3D: unknown deformation gradient - cannot compute Cauchy stress" << "\n";
exit (-1);
}
 
return thisCauchyStress;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::commitState (void)
{
return 0;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::revertToLastCommit (void)
{
return 0;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::revertToStart (void)
{
tensor F0("I", 2, def_dim_2);
F = F0;
C = F0;
Cinv = F0;
J = 1.0;
 
tensor ss_zero(2,def_dim_2,0.0);
thisPK2Stress = ss_zero;
thisGreenStrain = ss_zero;
Stiffness = getInitialTangentTensor();
 
return 0;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NDMaterial * NeoHookeanCompressible3D::getCopy (void)
{
NeoHookeanCompressible3D *theCopy =
new NeoHookeanCompressible3D (this->getTag(), K, G, rho);
 
theCopy->F = F;
theCopy->C = C;
theCopy->Cinv = Cinv;
theCopy->J = J;
 
theCopy->Stiffness = Stiffness;
theCopy->thisGreenStrain = thisGreenStrain;
theCopy->thisPK2Stress = thisPK2Stress;
 
return theCopy;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NDMaterial * NeoHookeanCompressible3D::getCopy (const char *type)
{
opserr << "NeoHookeanCompressible3D::getCopy(const char *) - not yet implemented\n";
return 0;
}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const char* NeoHookeanCompressible3D::getType (void) const
{
return "ThreeDimentionalFD";
}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::getOrder (void) const
{
return 6;
}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::sendSelf (int commitTag, Channel &theChannel)
{
int res = 0;
// not yet implemented
return res;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::recvSelf (int commitTag,
Channel &theChannel,
FEM_ObjectBroker &theBroker)
{
int res = 0;
// not yet implemented
return res;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void NeoHookeanCompressible3D::Print (OPS_Stream &s, int flag)
{
s << "Finite Deformation Elastic 3D model" << "\n";
s << "\trho: " << rho << "\n";
s << "\tK: " << K << "\n";
s << "\tG: " << G << "\n";
return;
}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//int NeoHookeanCompressible3D::setParameter(char **argv, int argc, Information &info)
//{
// return -1;
//}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//int NeoHookeanCompressible3D::updateParameter(int parameterID, Information &info)
//{
// return -1;
//}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int NeoHookeanCompressible3D::ComputeTrials()
{
tensor tensorI2("I", 2, def_dim_2);
tensor tsr1;
tensor tsr2;
 
// Cinv:
Cinv = C.inverse();
Cinv.symmetrize11();
 
// J:
J = sqrt(C.determinant());
 
// lame constants:
double lambda = K - 2.0*G/3.0;
double mu = G - lambda*log(J);
 
// Pk2Stress:
thisPK2Stress = (tensorI2-Cinv)*G + Cinv*lambda*log(J);
// Green Strain:
thisGreenStrain = (C - tensorI2) * 0.5;
// Langrangian Tangent Stiffness:
tsr1 = Cinv("ij")*Cinv("kl");
tsr1.null_indices();
tsr2 = tsr1.transpose0110() + tsr1.transpose0111();
Stiffness = tsr1*lambda + tsr2*mu;
 
return 0;
}
 
/trunk/SRC/material/nD/FiniteDeformation/NeoHookeanWEnergy.cpp
21,40 → 21,30
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY: Sept 2003
//# 28May2004
//#
//#
//===============================================================================
 
#ifndef NeoHookeanWEnergy_CPP
#define NeoHookeanWEnergy_CPP
 
#include <math.h>
#include <NeoHookeanWEnergy.h>
 
//================================================================================
// Normal constructor
//================================================================================
NeoHookeanWEnergy::NeoHookeanWEnergy(double E_in, double nu_in )
NeoHookeanWEnergy::NeoHookeanWEnergy(double K_in, double G_in )
:K(K_in), G(G_in)
{
E = E_in;
nu = nu_in;
if (nu != -1.0)
G = 0.5*E_in/(1.0+nu_in);
else
opserr << "Poisson's ratio = -1.0, not permited for this model (NeoHookeanWEnergy)";
 
if (nu != 0.5)
K = 0.3333333333333333333*E/(1.0-2.0*nu);
else
opserr << "Poisson's ratio = 0.5, not permited for this model (NeoHookeanWEnergy)";
// K = 1.0e20;
}
 
//NeoHookeanWEnergy::NeoHookeanWEnergy( )
//{
//
//}
NeoHookeanWEnergy::NeoHookeanWEnergy( )
:K(0.0), G(0.0)
{
 
}
 
//================================================================================
// Normal destructor
//================================================================================
68,20 → 58,11
//================================================================================
WEnergy * NeoHookeanWEnergy::newObj( )
{
WEnergy *new_WEnergy = new NeoHookeanWEnergy(E, nu);
WEnergy *new_WEnergy = new NeoHookeanWEnergy(K, G);
return new_WEnergy;
}
 
const double NeoHookeanWEnergy::getE()
{
return E;
}
 
const double NeoHookeanWEnergy::getnu()
{
return nu;
}
 
//================================================================================
// w
//================================================================================
144,5 → 125,6
return temp2;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/FiniteDeformationEP3D.h
New file
0,0 → 1,145
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
#ifndef FiniteDeformationEP3D_H
#define FiniteDefornationEP3D_H
 
#include <NDMaterial.h>
 
#include "FDEPState.h"
#include "FiniteDeformationElastic3D.h"
 
#include <fdYield.h>
#include <fdFlow.h>
#include <fdEvolution_S.h>
#include <fdEvolution_T.h>
 
#include <FEM_ObjectBroker.h>
#include <Channel.h>
#include <OPS_Globals.h>
#include <ConsoleErrorHandler.h>
 
#include <stresst.h>
#include <straint.h>
#include <BJmatrix.h>
#include <BJvector.h>
 
class FiniteDeformationEP3D : public NDMaterial
{
public:
// Constructor 00
FiniteDeformationEP3D( );
// Constructor 01
FiniteDeformationEP3D(int tag,
NDMaterial *fde3d_in,
fdYield *fdy_in,
fdFlow *fdf_in,
fdEvolution_S *fdEvolutionS_in,
fdEvolution_T *fdEvolutionT_in);
// Constructor 02
FiniteDeformationEP3D(int tag,
NDMaterial *fde3d_in,
fdYield *fdy_in,
fdFlow *fdf_in,
fdEvolution_S *fdEvolutionS_in);
// Constructor 03
FiniteDeformationEP3D(int tag,
NDMaterial *fde3d_in,
fdYield *fdy_in,
fdFlow *fdf_in,
fdEvolution_T *fdEvolutionT_in);
// Constructor 04
FiniteDeformationEP3D(int tag,
NDMaterial *fde3d_in,
fdYield *fdy_in,
fdFlow *fdf_in);
// Destructor
virtual ~FiniteDeformationEP3D( );
double getRho(void);
 
int setTrialF(const straintensor &f);
int setTrialFIncr(const straintensor &df);
 
const Tensor& getTangentTensor(void) ;
 
const straintensor getStrainTensor(void) ; // Default Green Strain
const stresstensor getStressTensor(void) ; // Default 2nd Piola Kirchhoff Stress
const straintensor getF(void);
const straintensor getFp(void);
 
int commitState(void) ;
int revertToLastCommit(void) ;
int revertToStart(void) ;
 
NDMaterial *getCopy (void);
NDMaterial *getCopy (const char *type);
 
const char *getType (void) const;
int getOrder (void) const;
 
int sendSelf(int commitTag, Channel &theChannel);
int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
 
void Print(OPS_Stream &s, int flag);
 
const stresstensor getCauchyStressTensor(void);
private:
 
NDMaterial *getFDE3D() const;
fdYield *getFDY() const;
fdFlow *getFDF() const;
fdEvolution_S *getFDEvolutionS() const;
fdEvolution_T *getFDEvolutionT() const;
FDEPState *getFDEPState() const;
 
int ImplicitAlgorithm();
int SemiImplicitAlgorithm();
 
private:
NDMaterial *fde3d;
fdYield *fdy;
fdFlow *fdf;
fdEvolution_S *fdEvolutionS;
fdEvolution_T *fdEvolutionT;
 
//material input
straintensor F;
 
//material response
straintensor iniGreen;
stresstensor iniPK2;
tensor iniTangent;
stresstensor B_PK2;
straintensor Fe;
stresstensor cauchystress;
FDEPState *fdeps;
 
};
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/MooneyRivlinSimoWEnergy.h
20,7 → 20,7
//#
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004
//#
//#
//===============================================================================
30,38 → 30,29
 
#include <Vector.h>
#include <Tensor.h>
//#include <BJvector.h>
//#include <BJtensor.h>
 
#include <OPS_Globals.h>
#include <W.h>
 
 
class MooneyRivlinSimoWEnergy : public WEnergy
{
private:
double E;
double nu;
double c1;
double c2;
double G;
double K;
public:
MooneyRivlinSimoWEnergy(double , double, double, double );
// MooneyRivlinSimoWEnergy( );
MooneyRivlinSimoWEnergy(double, double, double );
MooneyRivlinSimoWEnergy( );
~MooneyRivlinSimoWEnergy( );
WEnergy *newObj( );
 
const double getE();
const double getnu();
const double wE(const double &, const Vector &);
const Vector disowOdlambda(const Vector &);
const Vector d2isowOdlambda2(const Vector & );
// const tensor d2isowOdlambda1dlambda2(const vector &);
//const tensor d2isowOdlambda1dlambda2(const vector &);
const double dvolwOdJ( const double &);
const double d2volwOdJ2(const double &);
 
// friend OPS_Stream& operator<< (OPS_Stream& os, const MooneyRivlinSimoWEnergy &W);
 
};
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/OgdenSimoWEnergy.h
20,7 → 20,7
//#
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004
//#
//#
//===============================================================================
30,30 → 30,22
 
#include <Vector.h>
#include <Tensor.h>
//#include <BJvector.h>
//#include <BJtensor.h>
 
#include <OPS_Globals.h>
#include <W.h>
 
 
class OgdenSimoWEnergy : public WEnergy
{
private:
double E;
double nu;
double G;
double K;
int N_Ogden;
double *cr_Ogden;
double *mur_Ogden;
public:
OgdenSimoWEnergy(double, double, int , double * , double * );
// OgdenSimoWEnergy( );
OgdenSimoWEnergy(int , double * , double * , double );
OgdenSimoWEnergy( );
~OgdenSimoWEnergy( );
WEnergy *newObj( );
 
const double getE();
const double getnu();
const double wE(const double &, const Vector &) ;
const Vector disowOdlambda(const Vector & ) ;
const Vector d2isowOdlambda2(const Vector & ) ;
61,8 → 53,6
const double dvolwOdJ( const double &) ;
const double d2volwOdJ2( const double &) ;
 
// friend OPS_Stream& operator<< (OPS_Stream& os, const OgdenWEnergy &W);
 
};
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/MooneyRivlinWEnergy.cpp
29,25 → 29,23
#ifndef MooneyRivlinWEnergy_CPP
#define MooneyRivlinWEnergy_CPP
 
#include <math.h>
#include <MooneyRivlinWEnergy.h>
 
//================================================================================
// Normal constructor
//================================================================================
MooneyRivlinWEnergy::MooneyRivlinWEnergy( double E_in, double nu_in, double c1_in, double c2_in)
MooneyRivlinWEnergy::MooneyRivlinWEnergy( double c1_in, double c2_in)
: c1(c1_in), c2(c2_in)
{
E = E_in;
nu = nu_in;
c1 = c1_in;
c2 = c2_in;
 
}
 
//MooneyRivlinWEnergy::MooneyRivlinWEnergy( )
//{
//
//}
MooneyRivlinWEnergy::MooneyRivlinWEnergy( )
: c1(0.0), c2(0.0)
{
 
}
 
//================================================================================
// Normal destructor
//================================================================================
61,20 → 59,11
//================================================================================
WEnergy * MooneyRivlinWEnergy::newObj()
{
WEnergy *new_WEnergy = new MooneyRivlinWEnergy (E, nu, c1, c2);
WEnergy *new_WEnergy = new MooneyRivlinWEnergy (c1, c2);
return new_WEnergy;
}
 
const double MooneyRivlinWEnergy::getE()
{
return E;
}
 
const double MooneyRivlinWEnergy::getnu()
{
return nu;
}
 
//================================================================================
// w
//================================================================================
114,24 → 103,6
return d2isowOverdlambda2;
}
 
//================================================================================
// d(vol)w / dJ
//================================================================================
//const double MooneyRivlinWEnergy::dvolwOdJ(const double &J_in)
//{
// return 0.0;
//}
 
//================================================================================
// d2(vol)w / dJ2
//================================================================================
//const double MooneyRivlinWEnergy::d2volwOdJ2(const double &J_in)
//{
// if (nu != 0.5)
// return E/3.0/(1-2.0*nu);
// else
// return 1.0e20;
//}
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/Makefile
1,6 → 1,8
include ../../../../Makefile.def
 
OBJS = FiniteDeformationElastic3D.o \
NeoHookeanCompressible3D.o \
FDdecoupledElastic3D.o \
TclFiniteDeformationElastic3DCommand.o \
W.o \
LogWEnergy.o \
8,31 → 10,37
NeoHookeanWEnergy.o \
OgdenWEnergy.o \
SimoPisterWEnergy.o \
OgdenSimoWEnergy.o \
MooneyRivlinSimoWEnergy.o
OgdenSimoWEnergy.o \
MooneyRivlinSimoWEnergy.o \
FDEPState.o \
FiniteDeformationEP3D.o \
TclFiniteDeformationEP3DCommand.o
 
OBJS1 = FiniteDeformationElastic3D.o \
OBJS1 = FiniteDeformationElastic3D.o \
NeoHookeanCompressible3D.o \
FDdecoupledElastic3D.o \
TclFiniteDeformationElastic3DCommand.o \
W.o \
LogWEnergy.o \
MooneyRivlinWEnergy.o \
NeoHookeanWEnergy.o \
OgdenWEnergy.o \
SimoPisterWEnergy.o \
OgdenSimoWEnergy.o \
MooneyRivlinSimoWEnergy.o
OgdenSimoWEnergy.o \
MooneyRivlinSimoWEnergy.o \
FDEPState.o \
FiniteDeformationEP3D.o \
TclFiniteDeformationEP3DCommand.o
 
all: $(OBJS)
@$(CD) $(FE)/material/nD/FiniteDeformation/fdYield; $(MAKE);
@$(CD) $(FE)/material/nD/FiniteDeformation/fdFlow; $(MAKE);
@$(CD) $(FE)/material/nD/FiniteDeformation/fdEvolution; $(MAKE);
 
#all: $(OBJS)
# @$(RM) $(RMFLAGS) $(NDARRAY_LIBRARY);
# $(AR) $(ARFLAGS) $(NDARRAY_LIBRARY) $(NDARRAY)
 
 
 
 
fd_test: $(OBJS) fd_test.o
$(LINKER) $(LINKFLAGS) fd_test.o $(OBJS1) \
$(FE_LIBRARY) $(MACHINE_LINKLIBS) \
$(FE_LIBRARY) $(MACHINE_LINKLIBS) $(TCL_LIBRARY)\
$(MACHINE_NUMERICAL_LIBS) $(MACHINE_SPECIFIC_LIBS) \
-o fd_test
 
42,8 → 50,11
@$(RM) $(RMFLAGS) Makefile.bak *~ #*# core
 
clean: tidy
@$(RM) $(RMFLAGS) $(OBJS) *.o
 
@$(RM) $(RMFLAGS) $(OBJS) *.o *.bak
@$(CD) $(FE)/material/nD/FiniteDeformation/fdYield; $(MAKE) wipe;
@$(CD) $(FE)/material/nD/FiniteDeformation/fdFlow; $(MAKE) wipe;
@$(CD) $(FE)/material/nD/FiniteDeformation/fdEvolution; $(MAKE) wipe;
spotless: clean
 
wipe: spotless
/trunk/SRC/material/nD/FiniteDeformation/OgdenWEnergy.cpp
20,7 → 20,7
//#
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004
//#
//#
//===============================================================================
29,25 → 29,24
#ifndef OgdenWEnergy_CPP
#define OgdenWEnergy_CPP
 
#include <math.h>
#include <OgdenWEnergy.h>
 
//================================================================================
// Normal constructor
//================================================================================
OgdenWEnergy::OgdenWEnergy(double E_in, double nu_in, int N_in, double *cr_in, double *mur_in )
OgdenWEnergy::OgdenWEnergy(int N_in, double *cr_in, double *mur_in )
{
E = E_in;
nu = nu_in;
N_Ogden = N_in;
cr_Ogden = cr_in;
mur_Ogden = mur_in;
}
 
//OgdenWEnergy::OgdenWEnergy( )
//{
//
//}
OgdenWEnergy::OgdenWEnergy( )
{
N_Ogden = 0;
cr_Ogden = 0;
mur_Ogden = 0;
}
 
//================================================================================
// Normal destructor
62,20 → 61,11
//================================================================================
WEnergy * OgdenWEnergy::newObj( )
{
WEnergy *new_WEnergy = new OgdenWEnergy( E, nu, N_Ogden, cr_Ogden, mur_Ogden);
WEnergy *new_WEnergy = new OgdenWEnergy( N_Ogden, cr_Ogden, mur_Ogden);
return new_WEnergy;
}
 
const double OgdenWEnergy::getE()
{
return E;
}
 
const double OgdenWEnergy::getnu()
{
return nu;
}
 
//================================================================================
// w
//================================================================================
125,5 → 115,7
return d2isowOverdlambda2;
}
 
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdYield/fdYield.cpp
New file
0,0 → 1,66
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdYield_CPP
#define fdYield_CPP
 
#include "fdYield.h"
 
fdYield::fdYield ()
{
 
}
 
int fdYield::getNumRank( )
{
return 0;
}
 
double fdYield::getTolerance( )
{
return 1.0e-8;
}
 
double fdYield::dYodq(const stresstensor &sts, const FDEPState &fdepstate ) const
{
return 0.0;
}
 
stresstensor fdYield::dYoda(const stresstensor &sts, const FDEPState &fdepstate ) const
{
tensor tZ2(2, def_dim_2, 0.0);
return tZ2;
}
 
OPS_Stream& operator<<(OPS_Stream& os, const fdYield & fdyd)
{
os << "fdYield Parameters: " << "\n";
return os;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdYield/fdYieldVM.cpp
New file
0,0 → 1,141
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdYieldVM_CPP
#define fdYieldVM_CPP
 
#include "fdYieldVM.h"
 
//--------------------------------------------------------------------
fdYieldVM::fdYieldVM(double Y0_in) :Y0(Y0_in)
{
 
}
 
//--------------------------------------------------------------------
fdYield * fdYieldVM::newObj()
{
fdYield *newfdyd = new fdYieldVM(Y0);
return newfdyd;
}
 
int fdYieldVM::getNumRank()
{
//return 2;
return 1;
}
 
double fdYieldVM::getTolerance()
{
double tol = (Y0*(1.0e-8)) * (Y0*(1.0e-8));
return tol > 1.0e-8? tol : 1.0e-8;
//return Y0*1.0e-8 > 1.0e-8? Y0*1.0e-8 : 1.0e-8;
}
 
//--------------------------------------------------------------------------------------
// Yd = 3.0*(J2) - (Y0+q)*(Y0+q) = 0, Note here NumRank = 2: No Kinematic hardening
// Yd = |S_ij| - sqrt(2/3)*(Y0+q) = 0, Note here NumRank = 1: No Kinematic hardening
// Yd = 1.5 * (S_ij - a_ij)*(S_ij-a_ij) - (Y0+q)*(Y0+q) = 0, Note here NumRank = 2
//--------------------------------------------------------------------------------------
 
double fdYieldVM::Yd(const stresstensor &sts, const FDEPState &fdepstate ) const
{
//// NumRank=2, No Ki Hardeing
//double J2 = sts.Jinvariant2();
//double q = fdepstate.getStressLikeInVar();
//return 3.0*J2 - (Y0+q)*(Y0+q);
//// NumRank=1, No Ki Hardeing
//return sqrt(2.0*J2) - sqrt(2.0/3.0);
// NumRank=2, With Ki Hardeing
stresstensor a = fdepstate.getStressLikeKiVar();
double q = fdepstate.getStressLikeInVar();
stresstensor dev = sts.deviator() - a;
tensor st = dev("ij")*dev("ij");
st.null_indices();
double x = st.trace();
return 1.5*x - (Y0+q)*(Y0+q);
}
 
//--------------------------------------------------------------------
stresstensor fdYieldVM::dYods(const stresstensor &sts, const FDEPState &fdepstate ) const
{
//// NumRank=2, No Ki Hardeing
//return sts.deviator() * 3.0;
 
//// NumRank=1, No Ki Hardeing
//double J2 = sts.Jinvariant2();
//return sts.deviator()/(sqrt(8.0*J2);
 
// NumRank=2, With Ki Hardeing
stresstensor a = fdepstate.getStressLikeKiVar();
stresstensor dev = sts.deviator() - a;
return dev *3.0;
}
 
//--------------------------------------------------------------------
double fdYieldVM::dYodq(const stresstensor &sts, const FDEPState &fdepstate ) const
{
//// NumRank=2, No Ki Hardeing
//double q = fdepstate.getStressLikeInVar();
//return -2.0 * (Y0+q);
//// NumRank=1, No Ki Hardeing
//return sqrt(2.0/3.0);
 
// NumRank=2, With Ki Hardeing
double q = fdepstate.getStressLikeInVar();
return -2.0 * (Y0+q);
}
 
//--------------------------------------------------------------------
stresstensor fdYieldVM::dYoda(const stresstensor &sts, const FDEPState &fdepstate ) const
{
//// NumRank=2, No Ki Hardeing
//return sts.deviator() * 3.0;
 
//// NumRank=1, No Ki Hardeing
//double J2 = sts.Jinvariant2();
//return sts.deviator()/(sqrt(8.0*J2);
 
// NumRank=2, With Ki Hardeing
stresstensor a = fdepstate.getStressLikeKiVar();
stresstensor dev = sts.deviator() - a;
return dev *(-3.0);
}
 
//--------------------------------------------------------------------
OPS_Stream& operator<<(OPS_Stream& os, const fdYieldVM &fdydVM)
{
os << "fdYieldVM Parameters: " << "\n";
os << "Y0: " << fdydVM.Y0 << "\n";
return os;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdYield/fdYieldDP.cpp
New file
0,0 → 1,140
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdYieldDP_CPP
#define fdYieldDP_CPP
 
#include "fdYieldDP.h"
 
//--------------------------------------------------------------------
fdYieldDP::fdYieldDP(double FricAngle_in, double Cohension_in, int ConeIndex_in)
: FricAngle(FricAngle_in), Cohension(Cohension_in), ConeIndex(ConeIndex_in)
{
double pipi = 3.14159265358979323846;
double Root3 = sqrt(3.0);
double Root1o3 = 1.0/Root3;
double archAngle = FricAngle*pipi/180.0;
switch (ConeIndex) {
 
case 0: { // Compressive (Outer) Cone
k1 = 2.0*Root1o3*sin(archAngle)/(3.0-sin(archAngle));
k2 = 6.0*Root1o3*cos(archAngle)/(3.0-sin(archAngle));
break;
}
 
case 1: { // Tensile (Inner) Cone
k1 = 2.0*Root1o3*sin(archAngle)/(3.0+sin(archAngle));
k2 = 6.0*Root1o3*cos(archAngle)/(3.0+sin(archAngle));
break;
}
 
case 2: { // Mean Cone
k1 = Root3*sin(archAngle)/(9.0-sin(archAngle)*sin(archAngle));
k2 = 2.0*Root3*cos(archAngle)/(9.0-sin(archAngle)*sin(archAngle));
break;
}
 
case 3: { // Inner-tangent Cone
k1 = tan(archAngle)/sqrt(9.0+12.0*tan(archAngle)*tan(archAngle));
k2 = 3.0/sqrt(9.0+12.0*tan(archAngle)*tan(archAngle));
break;
}
 
default: { // Compressive (Outer) Cone
k1 = 2.0*Root1o3*sin(archAngle)/(3.0-sin(archAngle));
k2 = 6.0*Root1o3*cos(archAngle)/(3.0-sin(archAngle));
}
}
}
 
//--------------------------------------------------------------------
fdYield * fdYieldDP::newObj()
{
fdYield *newfdyd = new fdYieldDP(FricAngle, Cohension, ConeIndex);
return newfdyd;
}
 
int fdYieldDP::getNumRank()
{
return 1;
}
 
double fdYieldDP::getTolerance()
{
return 1.0e-8*Cohension > 1.0e-8? 1.0e-8*Cohension : 1.0e-8;
}
 
//--------------------------------------------------------------------------------------------
// Yd = k1*I1 + sqrt(0.5*Sij*Sji) - k2*(c+q) = 0,
// Note here NumRank = 1: No Kinematic hardening
//--------------------------------------------------------------------------------------------
 
double fdYieldDP::Yd(const stresstensor &sts, const FDEPState &fdepstate ) const
{
// NumRank=1, No Ki Hardeing
double q = fdepstate.getStressLikeInVar();
stresstensor dev = sts.deviator();
double I1 = sts.Iinvariant1();
tensor st = dev("ij")*dev("ij");
st.null_indices();
double x = st.trace();
return k1*I1 + sqrt(0.5*x) - k2*(Cohension+q);
}
 
//--------------------------------------------------------------------
stresstensor fdYieldDP::dYods(const stresstensor &sts, const FDEPState &fdepstate ) const
{
// NumRank=1, No Ki Hardeing
tensor tI2("I", 2, def_dim_2);
stresstensor dev = sts.deviator();
tensor st = dev("ij")*dev("ij");
st.null_indices();
double x = st.trace();
return tI2*k1 + dev*(1.0/sqrt(2.0*x));
}
 
//--------------------------------------------------------------------
double fdYieldDP::dYodq(const stresstensor &sts, const FDEPState &fdepstate ) const
{
// NumRank=1, No Ki Hardeing
return -k2;
}
 
//--------------------------------------------------------------------
OPS_Stream& operator<<(OPS_Stream& os, const fdYieldDP &fdydDP)
{
os << "fdYieldDP Parameters: " << "\n";
os << "FricAngle: " << fdydDP.FricAngle << "\n";
os << "Cohesion: " << fdydDP.Cohension << "\n";
os << "ConeIndex: " << fdydDP.ConeIndex << "\n";
return os;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdYield/fdYield.h
New file
0,0 → 1,58
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdYield_H
#define fdYield_H
 
#include <stresst.h>
#include <straint.h>
 
#include <FDEPState.h>
 
class fdYield
{
public:
fdYield();
virtual ~fdYield() {};
virtual fdYield *newObj() = 0;
 
virtual int getNumRank();
virtual double getTolerance();
virtual double Yd(const stresstensor &sts, const FDEPState &fdepstate ) const = 0;
virtual stresstensor dYods(const stresstensor &sts, const FDEPState &fdepstate ) const = 0;
virtual double dYodq(const stresstensor &sts, const FDEPState &fdepstate ) const;
virtual stresstensor dYoda(const stresstensor &sts, const FDEPState &fdepstate ) const;
virtual void print() = 0;
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdYield & fdyd);
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdYield/fdYieldVM.h
New file
0,0 → 1,57
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdYieldVM_H
#define fdYieldVM_H
 
#include "fdYield.h"
 
class fdYieldVM : public fdYield
{
private:
double Y0;
public:
fdYieldVM(double Y0_in);
// virtual ~fdYieldVM() {};
fdYield *newObj();
 
int getNumRank();
double getTolerance();
double Yd(const stresstensor &sts, const FDEPState &fdepstate ) const;
 
stresstensor dYods(const stresstensor &sts, const FDEPState &fdepstate ) const;
double dYodq(const stresstensor &sts, const FDEPState &fdepstate ) const;
stresstensor dYoda(const stresstensor &sts, const FDEPState &fdepstate ) const;
void print() { opserr << *this; };
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdYieldVM & fdydVM);
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdYield/fdYieldDP.h
New file
0,0 → 1,60
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdYieldDP_H
#define fdYieldDP_H
 
#include "fdYield.h"
 
class fdYieldDP : public fdYield
{
private:
double FricAngle;
double Cohension;
int ConeIndex;
double k1;
double k2;
public:
fdYieldDP(double FricAngle_in, double Cohension_in, int ConeIndex_in);
// virtual ~fdYieldDP() {};
fdYield *newObj();
 
int getNumRank();
double getTolerance();
double Yd(const stresstensor &sts, const FDEPState &fdepstate ) const;
 
stresstensor dYods(const stresstensor &sts, const FDEPState &fdepstate ) const;
double dYodq(const stresstensor &sts, const FDEPState &fdepstate ) const;
void print() { opserr << *this; };
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdYieldDP & fdydDP);
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdYield/Makefile
New file
0,0 → 1,23
include ../../../../../Makefile.def
 
OBJS = fdYield.o \
fdYieldVM.o \
fdYiledDP.o \
fdYieldDP.o
 
all: $(OBJS)
 
# Miscellaneous
 
tidy:
@$(RM) $(RMFLAGS) Makefile.bak *~ #*# core
 
clean: tidy
@$(RM) $(RMFLAGS) $(OBJS) *.o
 
spotless: clean
 
wipe: spotless
 
# DO NOT DELETE THIS LINE -- make depend depends on it.
 
/trunk/SRC/material/nD/FiniteDeformation/FiniteDeformationElastic3D.cpp
21,671 → 21,224
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY: Sept 2003
//# May28, 2004
//#
//#
//===============================================================================
#include <math.h>
 
#include <Matrix.h>
#include <Vector.h>
#include <Tensor.h>
#include <BJtensor.h>
#include <BJvector.h>
#include <ID.h>
 
#include <Channel.h>
#include <OPS_Globals.h>
 
#include <W.h>
 
#include <FiniteDeformationElastic3D.h>
 
 
//-----------------------------------------------------------------------------------------------------------------------------------------------
FiniteDeformationElastic3D::FiniteDeformationElastic3D(int tag,
int classTag,
WEnergy *wEnergy_in,
double rho_in= 0.0)
:NDMaterial(tag, classTag), rho(rho_in)
{
if ( wEnergy_in )
{
W = wEnergy_in->newObj();
E = W->getE();
nu = W->getnu();
 
Tensor F0("I", 2, def_dim_2);
F = F0;
}
else
{
opserr << "FiniteDeformationElastic3D:: FiniteDeformationElastic3D failed to construct the W Energy\n";
exit(-1);
}
}
 
FiniteDeformationElastic3D::FiniteDeformationElastic3D(int tag,
WEnergy *wEnergy_in,
double rho_in = 0.0)
:NDMaterial(tag, ND_TAG_FiniteDeformationElastic3D), rho(rho_in)
{
if ( wEnergy_in)
{
W = wEnergy_in->newObj();
E = W->getE();
nu = W->getnu();
 
Tensor F0("I", 2, def_dim_2);
F = F0;
}
else
{
opserr << "FiniteDeformationElastic3D:: FiniteDeformationElastic3D failed to construct the W Energy\n";
exit(-1);
}
}
 
FiniteDeformationElastic3D::FiniteDeformationElastic3D(int tag,
WEnergy *wEnergy_in)
:NDMaterial(tag, ND_TAG_FiniteDeformationElastic3D), rho(0.0)
{
if ( wEnergy_in )
{
W = wEnergy_in->newObj();
E = W->getE();
nu = W->getnu();
 
Tensor F0("I", 2, def_dim_2);
F = F0;
 
}
else
{
opserr << "FiniteDeformationElastic3D:: FiniteDeformationElastic3D failed to construct the W Energy\n";
exit(-1);
}
}
 
//------------------------------------------------------------------------------------------------------------------------------------------------
FiniteDeformationElastic3D::FiniteDeformationElastic3D( )
:NDMaterial(0, 0), rho(0.0)
{
W = 0;
E = 0.0;
nu = 0.0;
 
Tensor F0("I", 2, def_dim_2);
F = F0;
}
 
//------------------------------------------------------------------------------------------------------------------------------------------------
FiniteDeformationElastic3D::~FiniteDeformationElastic3D()
{
if (W)
delete W;
 
}
//---------------------------------------------------------------------------------------------------------------------------------------
double FiniteDeformationElastic3D::getE(void)
{
return E;
}
//------------------------------------------------------------------------------------------------------------------------------------------------
double FiniteDeformationElastic3D::getnu(void)
{
return nu;
}
 
//-------------------------------------------------------------------------------------------------------------------------------------------------
double FiniteDeformationElastic3D::getRho(void)
{
return rho;
}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------
WEnergy *FiniteDeformationElastic3D::getWEnergy(void)
int FiniteDeformationElastic3D::setTrialF(const straintensor &f)
{
return W;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::setTrialF(const Tensor &f)
{
F = f;
int ret = 0;
ret = this->ComputeTrials();
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::setTrialF(const Tensor &f, const Tensor &d)
int FiniteDeformationElastic3D::setTrialFIncr(const straintensor &df)
{
F = f;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::setTrialFIncr(const Tensor &f)
int FiniteDeformationElastic3D::setTrialC(const straintensor &c)
{
F += f;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::setTrialFIncr(const Tensor &f, const Tensor &d)
int FiniteDeformationElastic3D::setTrialCIncr(const straintensor &dc)
{
F += f;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
 
//-----------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor FiniteDeformationElastic3D::getF(void)
const straintensor FiniteDeformationElastic3D::getF(void)
{
return F;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
 
//-----------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor FiniteDeformationElastic3D::getC(void)
const straintensor FiniteDeformationElastic3D::getC(void)
{
return C;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
//------------------------------------------------------------------------------------------------------------------------------------------------------
const double FiniteDeformationElastic3D::getJ(void)
{
return J;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
const Vector FiniteDeformationElastic3D::getlambda(void)
{
Vector lambda(3);
 
lambda(0) = lambda1;
lambda(1) = lambda2;
lambda(2) = lambda3;
 
return lambda;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------
const Vector FiniteDeformationElastic3D::getlambda_wave(void)
{
Vector lambda_wave(3);
lambda_wave(0) = lambda_wave1;
lambda_wave(1) = lambda_wave2;
lambda_wave(2) = lambda_wave3;
 
return lambda_wave;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
const Vector FiniteDeformationElastic3D::wa(void)
{
Vector Wa(3);
Vector lambda_wave(3);
lambda_wave = this->getlambda_wave();
Vector disowOverlambda = W->disowOdlambda(lambda_wave);
double temp = disowOverlambda(0) * lambda_wave(0) +
disowOverlambda(1) * lambda_wave(1) +
disowOverlambda(2) * lambda_wave(2) ;
temp = temp * (-0.3333333333333333333333333333);
Wa(0) = temp + disowOverlambda(0) * lambda_wave(0);
Wa(1) = temp + disowOverlambda(1) * lambda_wave(1);
Wa(2) = temp + disowOverlambda(2) * lambda_wave(2);
return Wa;
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor FiniteDeformationElastic3D::Yab(void)
{
Tensor Y(2, def_dim_2, 0.0);
Tensor I_ij("I", 2, def_dim_2);
Vector lambda_wave(3);
lambda_wave = this->getlambda_wave();
Tensor d2 = W->d2isowOdlambda1dlambda2(lambda_wave);
Vector d1 = W->disowOdlambda(lambda_wave);
Vector d11 = W->d2isowOdlambda2(lambda_wave);
d2.val(1,1) = d11(0);
d2.val(2,2) = d11(1);
d2.val(3,3) = d11(2);
Vector tempi(3);
double tempd = d1(0)*lambda_wave(0) + d1(1)*lambda_wave(1) + d1(2)*lambda_wave(2) ;
double tempcd = 0.0;
for (int i=0; i<3; i++)
{
tempi(i) = 0.0;
for (int j=0; j<3; j++)
{
tempi(i) += d2.cval(i+1,j+1) * lambda_wave(i) * lambda_wave(j);
tempcd += d2.cval(i+1,j+1) * lambda_wave(i) * lambda_wave(j);
}
}
for(int a=1; a<=3; a++)
{
for(int b=1; b<=3; b++)
{
Y.val(a,b) = d1(a-1)*I_ij.cval(a,b)*lambda_wave(b-1) + d2.cval(a,b)*lambda_wave(a-1)*lambda_wave(b-1) -
( tempi(a-1) + tempi(b-1) + d1(a-1)*lambda_wave(a-1) + d1(b-1)*lambda_wave(b-1) ) / 3.0 +
( tempcd + tempd ) / 9.0;
}
}
return Y;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor FiniteDeformationElastic3D::FDisoStiffness(void)
{
Tensor I_ij("I", 2, def_dim_2);
Tensor I_ijkl( 4, def_dim_4, 0.0 );
I_ijkl = I_ij("ij") * I_ij("kl");
I_ij.null_indices();
Tensor I_ikjl( 4, def_dim_4, 0.0 );
I_ikjl = I_ijkl.transpose0110();
Tensor I_iljk( 4, def_dim_4, 0.0 );
I_iljk = I_ijkl.transpose0111();
Tensor I4s = (I_ikjl+I_iljk)*0.5;
Tensor tempI = I4s - I_ijkl;
 
Tensor CinvCinv = Cinv("ij") * Cinv("kl");
CinvCinv.null_indices(); Cinv.null_indices();
 
Tensor ICinv = ( CinvCinv.transpose0110() + CinvCinv.transpose0111() ) * (0.5);
 
Tensor CinvCinv_ICinv = CinvCinv - ICinv;
 
double I1 = lambda1*lambda1 + lambda2*lambda2 + lambda3*lambda3;
 
Vector Wa = this->wa();
Tensor yab = this->Yab();
 
Tensor L_iso(2,def_dim_2,0.0);
 
if(caseIndex == 0)
{
double d1 = (lambda1+lambda2)*(lambda1+lambda3)*(lambda1-lambda2)*(lambda1-lambda3);
double d2 = (lambda2+lambda3)*(lambda2+lambda1)*(lambda2-lambda3)*(lambda2-lambda1);
double d3 = (lambda3+lambda1)*(lambda3+lambda2)*(lambda3-lambda1)*(lambda3-lambda2);
 
Tensor M1 = ( C - I_ij*(I1-lambda1*lambda1) + Cinv*(J*J/(lambda1*lambda1)) ) * (1.0/d1);
Tensor M2 = ( C - I_ij*(I1-lambda2*lambda2) + Cinv*(J*J/(lambda2*lambda2)) ) * (1.0/d2);
Tensor M3 = ( C - I_ij*(I1-lambda3*lambda3) + Cinv*(J*J/(lambda3*lambda3)) ) * (1.0/d3);
 
double d1p = 4.0 *lambda1*lambda1*lambda1*lambda1 - I1*lambda1*lambda1 - J*J /(lambda1*lambda1);
double d2p = 4.0 *lambda2*lambda2*lambda2*lambda2 - I1*lambda2*lambda2 - J*J /(lambda2*lambda2);
double d3p = 4.0 *lambda3*lambda3*lambda3*lambda3 - I1*lambda3*lambda3 - J*J /(lambda3*lambda3);
 
Tensor Cm1M1M1Cm1 = Cinv("ij")*M1("kl") + M1("ij")*Cinv("kl");
Cinv.null_indices(); M1.null_indices(); Cm1M1M1Cm1.null_indices();
 
Tensor Cm1M2M2Cm1 = Cinv("ij")*M2("kl") + M2("ij")*Cinv("kl");
Cinv.null_indices(); M2.null_indices(); Cm1M2M2Cm1.null_indices();
 
Tensor Cm1M3M3Cm1 = Cinv("ij")*M3("kl") + M3("ij")*Cinv("kl");
Cinv.null_indices(); M3.null_indices(); Cm1M3M3Cm1.null_indices();
 
 
Tensor dM1M1d = I_ij("ij")*M1("kl") + M1("ij")*I_ij("kl");
I_ij.null_indices(); M1.null_indices(); dM1M1d.null_indices();
 
Tensor dM2M2d = I_ij("ij")*M2("kl") + M2("ij")*I_ij("kl");
I_ij.null_indices(); M2.null_indices(); dM2M2d.null_indices();
 
Tensor dM3M3d = I_ij("ij")*M3("kl") + M3("ij")*I_ij("kl");
I_ij.null_indices(); M3.null_indices(); dM3M3d.null_indices();
 
Tensor M1M1 = M1("ij") * M1("kl");
M1.null_indices(); M1M1.null_indices();
Tensor M2M2 = M2("ij") * M2("kl");
M2.null_indices(); M2M2.null_indices();
Tensor M3M3 = M3("ij") * M3("kl");
M3.null_indices(); M3M3.null_indices();
 
Tensor calM1 = ( tempI + (CinvCinv_ICinv -Cm1M1M1Cm1)*(J*J/(lambda1*lambda1)) + dM1M1d*(lambda1*lambda1) - M1M1*d1p ) *(1.0/d1);
Tensor calM2 = ( tempI + (CinvCinv_ICinv -Cm1M2M2Cm1)*(J*J/(lambda2*lambda2)) + dM2M2d*(lambda2*lambda2) - M2M2*d2p ) *(1.0/d2);
Tensor calM3 = ( tempI + (CinvCinv_ICinv -Cm1M3M3Cm1)*(J*J/(lambda3*lambda3)) + dM3M3d*(lambda3*lambda3) - M3M3*d3p ) *(1.0/d3);
 
Tensor L_iso_1 = ( calM1*Wa(0) + calM2*Wa(1) + calM3*Wa(2) ) * 2.0;
Tensor L_iso_2 = M1("ij") * M1("kl") * yab.cval(1,1) + M1("ij") * M2("kl") * yab.cval(1,2) + M1("ij") * M3("kl") * yab.cval(1,3) +
M2("ij") * M1("kl") * yab.cval(2,1) + M2("ij") * M2("kl") * yab.cval(2,2) + M2("ij") * M3("kl") * yab.cval(2,3) +
M3("ij") * M1("kl") * yab.cval(3,1) + M3("ij") * M2("kl") * yab.cval(3,2) + M3("ij") * M3("kl") * yab.cval(3,3);
L_iso = L_iso_1 + L_iso_2 ;
}
 
if(caseIndex == 11)
{
double d1 = (lambda1+lambda2)*(lambda1+lambda3)*(lambda1-lambda2)*(lambda1-lambda3);
Tensor M1 = (I_ij - Cinv * (lambda2*lambda2)) * (1.0/(lambda1+lambda2)/(lambda1-lambda2));
Tensor Mr = Cinv - M1;
double d1p = 4.0 *lambda1*lambda1*lambda1*lambda1 - I1*lambda1*lambda1 - J*J /(lambda1*lambda1);
Tensor Cm1M1M1Cm1 = Cinv("ij")*M1("kl") + M1("ij")*Cinv("kl");
Cinv.null_indices(); M1.null_indices(); Cm1M1M1Cm1.null_indices();
Tensor dM1M1d = I_ij("ij")*M1("kl") + M1("ij")*I_ij("kl");
I_ij.null_indices(); M1.null_indices(); dM1M1d.null_indices();
Tensor M1M1 = M1("ij") * M1("kl");
M1.null_indices(); M1M1.null_indices();
Tensor calM1 = ( tempI + (CinvCinv_ICinv -Cm1M1M1Cm1)*(J*J/(lambda1*lambda1)) + dM1M1d*(lambda1*lambda1) - M1M1*d1p ) *(1.0/d1);
Tensor calMr = (ICinv + calM1) * (-1.0);
Tensor L_iso_1 = ( calM1*Wa(0) + calMr*Wa(2) ) * 2.0;
Tensor L_iso_2 = M1("ij") * M1("kl") * yab.cval(1,1) + M1("ij") * Mr("kl") * yab.cval(1,3) +
Mr("ij") * M1("kl") * yab.cval(3,1) + Mr("ij") * Mr("kl") * yab.cval(3,3);
L_iso = L_iso_1 + L_iso_2 ;
}
 
if(caseIndex == 13)
{
double d3 = (lambda3+lambda1)*(lambda3+lambda2)*(lambda3-lambda1)*(lambda3-lambda2);
Tensor M3 = (I_ij - Cinv * (lambda2*lambda2)) * (1.0/(lambda3+lambda2)/(lambda3-lambda2));
Tensor Mr = Cinv - M3;
double d3p = 4.0 *lambda3*lambda3*lambda3*lambda3 - I1*lambda3*lambda3 - J*J /(lambda3*lambda3);
Tensor Cm1M3M3Cm1 = Cinv("ij")*M3("kl") + M3("ij")*Cinv("kl");
Cinv.null_indices(); M3.null_indices(); Cm1M3M3Cm1.null_indices();
Tensor dM3M3d = I_ij("ij")*M3("kl") + M3("ij")*I_ij("kl");
I_ij.null_indices(); M3.null_indices(); dM3M3d.null_indices();
Tensor M3M3 = M3("ij") * M3("kl");
M3.null_indices(); M3M3.null_indices();
Tensor calM3 = ( tempI + (CinvCinv_ICinv -Cm1M3M3Cm1)*(J*J/(lambda3*lambda3)) + dM3M3d*(lambda3*lambda3) - M3M3*d3p ) *(1.0/d3);
Tensor calMr = (ICinv + calM3) * (-1.0);
Tensor L_iso_1 = ( calM3*Wa(2) + calMr*Wa(0) ) * 2.0;
Tensor L_iso_2 = M3("ij") * M3("kl") * yab.cval(3,3) + M3("ij") * Mr("kl") * yab.cval(3,1) +
Mr("ij") * M3("kl") * yab.cval(1,3) + Mr("ij") * Mr("kl") * yab.cval(1,1);
L_iso = L_iso_1 + L_iso_2 ;
}
 
if(caseIndex == 2)
{
Vector lambda_wave(3);
lambda_wave = this->getlambda_wave();
Vector d11 = W->d2isowOdlambda2(lambda_wave);
Vector d1 = W->disowOdlambda(lambda_wave);
double G2linear = d11(1)*lambda_wave2*lambda_wave2 + d1(1)*lambda_wave2;
if (G2linear == 0.0) G2linear = E / (1.0+nu);
 
L_iso = ( ICinv - CinvCinv * (1.0/3.0) ) * G2linear;
}
 
return L_iso;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor FiniteDeformationElastic3D::FDvolStiffness(void)
{
Tensor CinvCinv = Cinv("ij")*Cinv("kl") ;
Cinv.null_indices(); CinvCinv.null_indices();
Tensor ICinv = ( CinvCinv.transpose0110() + CinvCinv.transpose0111() ) * (0.5);
double dWdJ = W->dvolwOdJ(J);
double d2WdJ2 = W->d2volwOdJ2(J);
double wj = d2WdJ2*J*J + J*dWdJ;
 
Tensor L_vol = CinvCinv*wj - ICinv *2.0*J*dWdJ ;
 
return L_vol;
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor& FiniteDeformationElastic3D::getTangentTensor(void)
{
return Stiffness;
exit (-1);
// Just to make it compile
Tensor *ret = new Tensor;
return *ret;
}
 
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const Tensor
&FiniteDeformationElastic3D::getInitialTangentTensor(void)
{
tensor I2("I", 2, def_dim_2);
tensor I_ijkl = I2("ij")*I2("kl");
tensor I_ikjl = I_ijkl.transpose0110();
tensor I_iljk = I_ijkl.transpose0111();
tensor I4s = (I_ikjl+I_iljk)*0.5;
static tensor L0;
L0 = I_ijkl*( E*nu / ( (1.0+nu)*(1.0 - 2.0*nu) ) ) + I4s*( E / (1.0 + nu) );
 
return L0;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
// Just to make it compile
Tensor *ret = new Tensor;
return *ret;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const straintensor FiniteDeformationElastic3D::getStrainTensor(void)
{
return thisGreenStrain;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
// Just to make it compile
straintensor ret;
return ret;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const stresstensor FiniteDeformationElastic3D::getStressTensor(void)
{
return thisPK2Stress;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
stresstensor ret;
return ret;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const stresstensor FiniteDeformationElastic3D::getPK1StressTensor(void)
{
stresstensor thisSPKStress = this->getStressTensor();
stresstensor thisFPKStress = thisSPKStress("ij") * (F.transpose11())("jk") ;
return thisFPKStress;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
stresstensor ret;
return ret;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const stresstensor FiniteDeformationElastic3D::getCauchyStressTensor(void)
{
stresstensor thisSPKStress = this->getStressTensor();
stresstensor thisCauchyStress = F("ij") * thisSPKStress("jk") * (F.transpose11())("kl") * (1.0/J);
return thisCauchyStress;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
stresstensor ret;
return ret;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::commitState (void)
{
return 0;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return -1;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::revertToLastCommit (void)
{
return 0;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return -1;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::revertToStart (void)
{
Tensor F0("I", 2, def_dim_2);
F = F0;
C = F0;
Cinv = F0;
 
Tensor ss_zero(2,def_dim_2,0.0);
thisPK2Stress = ss_zero;
thisGreenStrain = ss_zero;
Stiffness = getInitialTangentTensor();
 
J = 1.0;
lambda1 = 1.0;
lambda2 = 1.0;
lambda3 = 1.0;
lambda_wave1 = 1.0;
lambda_wave2 = 1.0;
lambda_wave3 = 1.0;
 
caseIndex = 0;
 
return 0;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return -1;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NDMaterial * FiniteDeformationElastic3D::getCopy (void)
{
FiniteDeformationElastic3D *theCopy =
new FiniteDeformationElastic3D (this->getTag(), this->getWEnergy(), this->getRho());
 
theCopy->F = F;
theCopy->C = C;
theCopy->Cinv = Cinv;
theCopy->J = J;
theCopy->lambda1 = lambda1;
theCopy->lambda2 = lambda2;
theCopy->lambda3 = lambda3;
theCopy->lambda_wave1 = lambda_wave1;
theCopy->lambda_wave2 = lambda_wave2;
theCopy->lambda_wave3 = lambda_wave3;
 
theCopy->Stiffness = Stiffness;
theCopy->thisGreenStrain = thisGreenStrain;
theCopy->thisPK2Stress = thisPK2Stress;
 
return theCopy;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NDMaterial * FiniteDeformationElastic3D::getCopy (const char *type)
{
 
opserr << "FiniteDeformationElastic3D::getCopy(const char *) - not yet implemented\n";
 
return 0;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const char* FiniteDeformationElastic3D::getType (void) const
{
return "FiniteDeformationElastic3D";
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::getOrder (void) const
{
return 6;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::sendSelf (int commitTag, Channel &theChannel)
{
int res = 0;
 
static Vector data(4);
 
data(0) = this->getTag();
data(1) = rho;
data(2) = E;
data(3) = nu;
 
res += theChannel.sendVector(this->getDbTag(), commitTag, data);
if (res < 0)
{
opserr << "FiniteDeformationElastic3D::sendSelf -- could not send Vector\n";
return res;
}
 
return res;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::recvSelf (int commitTag,
Channel &theChannel,
FEM_ObjectBroker &theBroker)
{
int res = 0;
 
static Vector data(4);
 
res += theChannel.recvVector(this->getDbTag(), commitTag, data);
if (res < 0)
{
opserr << "FiniteDeformationElastic3D::recvSelf -- could not recv Vector\n";
return res;
}
 
this->setTag((int)data(0));
rho = data(1);
E = data(2);
nu = data(3);
 
return res;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return 0;
}
 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void FiniteDeformationElastic3D::Print (OPS_Stream &s, int flag)
{
s << "Finite Deformation Elastic 3D model" << endln;
s << "\trho: " << rho << endln;
s << "\tE: " << E << endln;
s << "\tnu: " << nu << endln;
opserr << "FiniteDeformationElastic3D-- subclass responsibility\n";
exit (-1);
return;
}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::setParameter(char **argv, int argc, Information &info)
{
return -1;
}
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::updateParameter(int parameterID, Information &info)
{
return -1;
return -1;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::ComputeTrials()
{
// C:
C = (F.transpose11())("ij")*F("jk");
F.null_indices(); (F.transpose11()).null_indices(); C.null_indices();
C.symmetrize11();
 
// Cinv:
Cinv = C.inverse( );
Cinv.symmetrize11();
 
// J:
J = F.determinant( );
 
// lambda:
tensor eigtensor = C.eigenvalues();
lambda1 = sqrt(eigtensor.cval(1));
lambda2 = sqrt(eigtensor.cval(2));
lambda3 = sqrt(eigtensor.cval(3));
 
// lambda_wave
double JJJ = pow(J, -0.33333333333333333333333333333);
lambda_wave1 = lambda1 *JJJ;
lambda_wave2 = lambda2 *JJJ;
lambda_wave3 = lambda3 *JJJ;
 
// caseIndex, note lambda1 >= lambda2 >= lambda3 implied by C.eigenvalues()
double diff12 = fabs(lambda1-lambda2);
double diff23 = fabs(lambda2-lambda3);
double perturbation = pow( d_macheps(), (0.4) );
if ( diff12 >= perturbation && diff23 >= perturbation )
caseIndex = 0;
else if (diff12 >= perturbation && diff23 < perturbation )
caseIndex = 11;
else if (diff12 < perturbation && diff23 >= perturbation )
caseIndex = 13;
else if (diff12 < perturbation && diff23 < perturbation )
caseIndex = 2;
else {opserr << "FiniteDeformationElastic3D::getCaseIndex -- unknown case! \n";
exit (-1);}
 
Tensor I_ij("I", 2, def_dim_2);
 
Tensor isoPK2Stress(2, def_dim_2, 0.0);
 
Vector Wa = this->wa();
 
double I1 = lambda1*lambda1+lambda2*lambda2+lambda3*lambda3;
 
if (caseIndex == 0)
{
double d1 = (lambda1+lambda2)*(lambda1+lambda3)*(lambda1-lambda2)*(lambda1-lambda3);
double d2 = (lambda2+lambda3)*(lambda2+lambda1)*(lambda2-lambda3)*(lambda2-lambda1);
double d3 = (lambda3+lambda1)*(lambda3+lambda2)*(lambda3-lambda1)*(lambda3-lambda2);
 
Tensor M1 = ( C - I_ij*(I1-lambda1*lambda1) + Cinv *(J*J/(lambda1*lambda1)) ) * (1.0/d1);
Tensor M2 = ( C - I_ij*(I1-lambda2*lambda2) + Cinv *(J*J/(lambda2*lambda2)) ) * (1.0/d2);
Tensor M3 = ( C - I_ij*(I1-lambda3*lambda3) + Cinv *(J*J/(lambda3*lambda3)) ) * (1.0/d3);
 
isoPK2Stress = M1*Wa(0) + M2*Wa(1) + M3*Wa(2);
}
 
if (caseIndex == 11)
{
Tensor M1 = (I_ij - Cinv * (lambda2*lambda2)) * (1.0/(lambda1+lambda2)/(lambda1-lambda2));
Tensor Mr = Cinv - M1;
isoPK2Stress = Mr*Wa(2) + M1*Wa(0);
}
 
if (caseIndex == 13)
{
Tensor M3 = (I_ij - Cinv * (lambda2*lambda2)) * (1.0/(lambda3+lambda2)/(lambda3-lambda2));
Tensor Mr = Cinv - M3;
isoPK2Stress = Mr*Wa(0) + M3*Wa(2);
}
 
if (caseIndex == 2)
{
 
}
 
double dWdJ = W->dvolwOdJ(J);
Tensor volPK2Stress = Cinv * J * dWdJ;
 
thisPK2Stress = volPK2Stress + isoPK2Stress; // This is PK2Stress
 
thisGreenStrain = (C - I_ij) * 0.5; // This is Green Strain
 
Tensor L_iso = this->FDisoStiffness();
Tensor L_vol = this->FDvolStiffness();
Stiffness = L_iso + L_vol; // This is Langrangian Tangent Stiffness
 
return 0;
}
//--------------------------------------------------------------------------------------------------------------------------------------
int FiniteDeformationElastic3D::getCaseIndex()
{
return caseIndex;
}
 
 
/trunk/SRC/material/nD/FiniteDeformation/SimoPisterWEnergy.h
20,7 → 20,7
//#
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004
//#
//#
//===============================================================================
30,27 → 30,22
 
#include <Vector.h>
#include <Tensor.h>
//#include <BJvector.h>
//#include <BJtensor.h>
 
#include <Channel.h>
#include <OPS_Globals.h>
#include <W.h>
 
 
 
class SimoPisterWEnergy : public WEnergy
{
private:
double E;
double nu;
double G;
double K;
public:
SimoPisterWEnergy( double , double );
// SimoPisterWEnergy( );
SimoPisterWEnergy( double );
SimoPisterWEnergy( );
~SimoPisterWEnergy( ) ;
WEnergy *newObj( );
 
const double getE();
const double getnu();
const double wE(const double &, const Vector & ) ;
// const Vector disowOdlambda(const Vector &lambda_wave_in ) ;
// const Vector const d2isowOdlambda2(const Vector &lambda_wave_in ) ;
58,8 → 53,6
const double dvolwOdJ( const double &J_in) ;
const double d2volwOdJ2( const double &J_in) ;
 
// friend OPS_Stream& operator<< (OPS_Stream& os, const LogWEnergy &W);
 
};
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/TclFiniteDeformationElastic3DCommand.cpp
21,23 → 21,20
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY: Sept 2003
//# 28May2004
//#
//#
//===============================================================================
#include <tcl.h>
#include <OPS_Globals.h>
 
//#include <stdlib.h>
//#include <string.h>
 
#include <Vector.h>
 
#include <Domain.h>
 
#include <ErrorHandler.h>
#include <TclModelBuilder.h>
 
#include <FiniteDeformationElastic3D.h>
#include <NeoHookeanCompressible3D.h>
#include <FDdecoupledElastic3D.h>
 
#include <W.h>
#include <LogWEnergy.h>
#include <MooneyRivlinWEnergy.h>
47,327 → 44,369
#include <OgdenSimoWEnergy.h>
#include <MooneyRivlinSimoWEnergy.h>
 
//static void cleanup(TCL_Char **argv)
//{
// Tcl_Free((char *) argv);
//}
 
// the functions to create the component objects (defined at eof)
WEnergy *EvaluateWEnergyArgs(ClientData, Tcl_Interp *, TCL_Char *tclString);
 
// little function to free memory after invoke Tcl_SplitList
// note Tcl_Split list stores the array of pointers and the strings in
// one array, which is why Tcl_Free needs only be called on the array.
 
static void cleanup(TCL_Char **argv)
{
Tcl_Free((char *) argv);
}
 
FiniteDeformationElastic3D *
TclModelBuilder_addFiniteDeformationElastic3D(ClientData clientData, Tcl_Interp *interp, int argc,
TCL_Char **argv, TclModelBuilder *theTclBuilder, int eleArgStart)
{
// create some empty pointers which we fill in as parse the command line
//int argc;
//TCL_Char **argv;
 
int tag = 0;
double rho_in = 0.0;
WEnergy *wenergy =0;
 
int loc = eleArgStart;
 
if (argc < 6) {
opserr << "WARNING FiniteDeformation3DElastic -insufficient number of arguments\n";
return 0;
}
FiniteDeformationElastic3D *theMaterial = 0;
 
if (Tcl_GetInt(interp, argv[loc+1], &tag) != TCL_OK)
{
opserr << "nDMaterial FiniteDeformationElastic3D - invalid tag " << argv[loc+1] << endln;
return 0;
if (Tcl_GetInt(interp, argv[loc+1], &tag) != TCL_OK) {
opserr << "Warning: nDMaterial FiniteDeformationElastic3D - invalid tag " << argv[loc+1] << "\n";
exit (-1);
}
// Neo-Hookean (Compressible)
if ( (strcmp(argv[loc+2],"NeoHookean3D") == 0) || (strcmp(argv[loc+2],"NeoHookeanCompressible3D") == 0) ) {
 
if ( (strcmp(argv[loc+2],"-wenergy") == 0) || (strcmp(argv[loc+2],"-WEnergy") == 0)
|| (strcmp(argv[loc+2],"-w") == 0) || (strcmp(argv[loc+2],"-W") == 0) )
{
wenergy = EvaluateWEnergyArgs(clientData, interp, argv[loc+3]);
if (wenergy == 0)
{
opserr << "nDMaterial FiniteDeformationElastic3D - could not create a WEnergy from" << argv[loc+3] << endln;
return 0;
}
}
double rho_in = 0.0;
double K_in = 0.0;
double G_in = 0.0;
 
if (Tcl_GetDouble(interp, argv[loc+4], &rho_in) != TCL_OK)
{
opserr << "nDMaterial FiniteDeformationElastic3D - invalid rho " << argv[loc+4] << endln;
return 0;
}
if (argc < 7) {
opserr << "Warning: NeoHookeanCompressible3D -insufficient number of arguments\n";
exit (-1);
}
 
FiniteDeformationElastic3D *theMaterial = 0;
if ( wenergy != 0)
theMaterial = new FiniteDeformationElastic3D(tag, wenergy, rho_in);
if (Tcl_GetDouble(interp, argv[loc+3], &K_in) != TCL_OK) {
opserr << "nDMaterial NeoHookeanCompressible3D - invalid K " << argv[loc+3] << "\n";
exit (-1);
}
 
else
opserr << "invalid number of args used to create a FiniteDeformationElastic3D material\n";
if (Tcl_GetDouble(interp, argv[loc+4], &G_in) != TCL_OK) {
opserr << "Warning: nDMaterial NeoHookeanCompressible3D - invalid G " << argv[loc+4] << "\n";
exit (-1);
}
 
return theMaterial;
}
if (Tcl_GetDouble(interp, argv[loc+5], &rho_in) != TCL_OK) {
opserr << "Warning: nDMaterial NeoHookeanCompressible3D - invalid rho " << argv[loc+5] << "\n";
exit (-1);
}
theMaterial = new NeoHookeanCompressible3D(tag, K_in, G_in, rho_in);
}
 
// DecoupledLog3D
else if ( (strcmp(argv[loc+2],"DecoupledLog3D") == 0) || (strcmp(argv[loc+2],"DecoupledLogarithmic3D") == 0) ) {
double K_in = 0.0;
double G_in = 0.0;
double rho_in = 0.0;
WEnergy *wenergy =0;
 
if (argc < 7) {
opserr << "Warning: DecoupledLogarithmic3D -insufficient number of arguments\n";
exit (-1);
}
 
WEnergy *EvaluateWEnergyArgs(ClientData clientData, Tcl_Interp *interp, TCL_Char *tclString)
{
int argc;
TCL_Char **argv;
if (Tcl_GetDouble(interp, argv[loc+3], &K_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledLogarithmic3D - invalid K " << argv[loc+3] << "\n";
exit (-1);
}
 
// split the list
if (Tcl_SplitList(interp, tclString, &argc, &argv) != TCL_OK)
return 0;
if (Tcl_GetDouble(interp, argv[loc+4], &G_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledLogarithmic3D - invalid G " << argv[loc+4] << "\n";
exit (-1);
}
 
if (argc == 0)
return 0;
if (Tcl_GetDouble(interp, argv[loc+5], &rho_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledLogarithmic3D - invalid rho " << argv[loc+5] << "\n";
exit (-1);
}
wenergy = new LogWEnergy(K_in, G_in);
if ( wenergy != 0 ) {
theMaterial = new FDdecoupledElastic3D(tag, wenergy, rho_in);
}
else {
opserr << "Error: nDMaterial DecoupledLogarithmic3D -invalid material model\n";
exit (-1);
}
}
// DecoupledNeoHookean3D
else if ( (strcmp(argv[loc+2],"DecoupledNeoHookean3D") == 0) || (strcmp(argv[loc+2],"DecoupledNH3D") == 0) ) {
double K_in = 0.0;
double G_in = 0.0;
double rho_in = 0.0;
WEnergy *wenergy =0;
 
// now parse the list & construct the required object
WEnergy *wenergy = 0;
if (argc < 7) {
opserr << "Warning: DecoupledNeoHookean3D -insufficient number of arguments\n";
exit (-1);
}
 
// #1 Logarithmic
if ((strcmp(argv[0],"-Log") == 0) || (strcmp(argv[0],"-log") == 0) || (strcmp(argv[0],"-Logarithmic") == 0) )
{
double E_in = 0.0;
double nu_in = 0.0;
if (argc > 2)
{
if (Tcl_GetDouble(interp, argv[1], &E_in) != TCL_OK)
{
opserr << "Warning: invalid Young's Module for Logarithmic Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+3], &K_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid K " << argv[loc+3] << "\n";
exit (-1);
}
 
if (Tcl_GetDouble(interp, argv[2], &nu_in) != TCL_OK)
{
opserr << "Warning: invalid Poisson Ratio for Logarithmic Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+4], &G_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid G " << argv[loc+4] << "\n";
exit (-1);
}
 
wenergy = new LogWEnergy(E_in, nu_in);
}
}
if (Tcl_GetDouble(interp, argv[loc+5], &rho_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid rho " << argv[loc+5] << "\n";
exit (-1);
}
wenergy = new NeoHookeanWEnergy(K_in, G_in);
if ( wenergy != 0 ) {
theMaterial = new FDdecoupledElastic3D(tag, wenergy, rho_in);
}
else {
opserr << "Error: nDMaterial DecoupledNeoHookean3D -invalid material model\n";
exit (-1);
}
}
 
// #2 Mooney Rivlin
if ((strcmp(argv[0],"-MR") == 0) || (strcmp(argv[0],"-MooneyRivlin") == 0) )
{
double E_in = 0.0;
double nu_in = 0.0;
double c1_in = 0.0;
double c2_in = 0.0;
if (argc > 4)
{
if (Tcl_GetDouble(interp, argv[1], &E_in) != TCL_OK)
{
opserr << "Warning: invalid 1st material parameter for Mooney-Rivlin Strain Energy Function.";
return 0;
}
// DecoupledMooneyRivlinSimo3D
else if ( (strcmp(argv[loc+2],"DecoupledMooneyRivlinSimo3D") == 0) || (strcmp(argv[loc+2],"DecoupledMRS3D") == 0) ) {
double c1_in = 0.0;
double c2_in = 0.0;
double K_in = 0.0;
double rho_in = 0.0;
WEnergy *wenergy =0;
 
if (Tcl_GetDouble(interp, argv[2], &nu_in) != TCL_OK)
{
opserr << "Warning: invalid 2nd material parameter for Mooney-Rivlin Strain Energy Function.";
return 0;
}
if (argc < 8) {
opserr << "Warning: DecoupledNeoHookean3D -insufficient number of arguments\n";
exit (-1);
}
 
if (Tcl_GetDouble(interp, argv[3], &c1_in) != TCL_OK)
{
opserr << "Warning: invalid 1st material parameter for Mooney-Rivlin Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+3], &c1_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid c1 " << argv[loc+3] << "\n";
exit (-1);
}
 
if (Tcl_GetDouble(interp, argv[4], &c2_in) != TCL_OK)
{
opserr << "Warning: invalid 2nd material parameter for Mooney-Rivlin Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+4], &c2_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid c2 " << argv[loc+4] << "\n";
exit (-1);
}
 
wenergy = new MooneyRivlinWEnergy(E_in, nu_in, c1_in, c2_in);
}
}
if (Tcl_GetDouble(interp, argv[loc+5], &K_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid K " << argv[loc+5] << "\n";
exit (-1);
}
 
// #3 Neo Hookean
if ((strcmp(argv[0],"-NH") == 0) || (strcmp(argv[0],"-NeoHookean") == 0) )
{
double E_in = 0.0;
double nu_in = 0.0;
if (argc > 2)
{
if (Tcl_GetDouble(interp, argv[1], &E_in) != TCL_OK)
{
opserr << "Warning: invalid Young's Module for Neo-Hookean Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+6], &rho_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid rho " << argv[loc+6] << "\n";
exit (-1);
}
wenergy = new MooneyRivlinSimoWEnergy(c1_in, c2_in, K_in);
if ( wenergy != 0 ) {
theMaterial = new FDdecoupledElastic3D(tag, wenergy, rho_in);
}
else {
opserr << "Error: nDMaterial DecoupledMooneyRivlinSimo3D -invalid material model\n";
exit (-1);
}
}
 
if (Tcl_GetDouble(interp, argv[2], &nu_in) != TCL_OK)
{
opserr << "Warning: invalid Poisson Ratio for Neo-Hookean Strain Energy Function.";
return 0;
}
// DecoupleOgdenSimo3D
else if ( (strcmp(argv[loc+2],"DecoupledOgdenSimo3D") == 0) || (strcmp(argv[loc+2],"DecoupledOS3D") == 0) ) {
int N_in = 0;
double K_in = 0.0;
double rho_in = 0.0;
WEnergy *wenergy =0;
 
wenergy = new NeoHookeanWEnergy(E_in, nu_in);
}
}
 
// #4 Ogden
if ((strcmp(argv[0],"-Ogden") == 0) || (strcmp(argv[0],"-ogden") == 0) )
{
double E_in = 0.0;
double nu_in = 0.0;
int N_in = 0;
 
if (argc > 2*N_in+3)
{
if (Tcl_GetDouble(interp, argv[1], &E_in) != TCL_OK)
{
opserr << "Warning: invalid vector parameter number for Ogden Strain Energy Function.";
return 0;
}
 
if (Tcl_GetDouble(interp, argv[2], &nu_in) != TCL_OK)
{
opserr << "Warning: invalid vector parameter number for Ogden Strain Energy Function.";
return 0;
}
 
if (Tcl_GetInt(interp, argv[3], &N_in) != TCL_OK)
{
opserr << "Warning: invalid vector parameter number for Ogden Strain Energy Function.";
return 0;
}
if (argc > 2*N_in+5) {
if (Tcl_GetInt(interp, argv[loc+3], &N_in) != TCL_OK) {
opserr << "Warning: invalid vector parameter number for Ogden Strain Energy Function\n";
exit (-1);
}
double *cr_in = new double[N_in];
double *mur_in = new double[N_in];
for (int i=0; i<N_in; i++)
{
if (Tcl_GetDouble(interp, argv[4+i], &cr_in[i]) != TCL_OK)
{
opserr << "Warning: invalid parameter for Ogden Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[4+N_in+i], &mur_in[i]) != TCL_OK)
{
opserr << "Warning: invalid parameter for Ogden Strain Energy Function.";
return 0;
}
 
for (int i=0; i<N_in; i++) {
if (Tcl_GetDouble(interp, argv[loc+4+i], &cr_in[i]) != TCL_OK) {
opserr << "Warning: invalid parameter for Ogden Strain Energy Function\n";
exit (-1);
}
if (Tcl_GetDouble(interp, argv[loc+4+N_in+i], &mur_in[i]) != TCL_OK) {
opserr << "Warning: invalid parameter for Ogden Strain Energy Function\n";
exit (-1);
}
}
 
wenergy = new OgdenWEnergy(E_in, nu_in, N_in, cr_in, mur_in);
}
}
if (Tcl_GetDouble(interp, argv[loc+2*N_in+4], &K_in) != TCL_OK) {
opserr << "Warning: invalid Bulk Modulus number for Ogden Strain Energy Function\n";
exit (-1);
}
 
// #5 Simo Pister
if ((strcmp(argv[0],"-SP") == 0) || (strcmp(argv[0],"-SimoPister") == 0) )
{
double E_in = 0.0;
double nu_in = 0.0;
if (argc > 2)
{
if (Tcl_GetDouble(interp, argv[1], &E_in) != TCL_OK)
{
opserr << "Warning: invalid Young's Module for Simo-Pister Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+2*N_in+5], &rho_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledSimoPister3D - invalid rho\n";
exit (-1);
}
wenergy = new OgdenSimoWEnergy(N_in, cr_in, mur_in, K_in);
if ( wenergy != 0 ) {
theMaterial = new FDdecoupledElastic3D(tag, wenergy, rho_in);
//if ( cr_in ) delete cr_in;
//if ( mur_in ) delete mur_in;
}
else {
opserr << "Error: nDMaterial DecoupledOgdenSimo3D -invalid material model\n";
exit (-1);
}
}
}
 
if (Tcl_GetDouble(interp, argv[2], &nu_in) != TCL_OK)
{
opserr << "Warning: invalid Poisson Ratio for Simo-Pister Strain Energy Function.";
return 0;
}
// DecoupledMooneyRivlin3D
else if ( (strcmp(argv[loc+2],"DecoupledMooneyRivlin3D") == 0) || (strcmp(argv[loc+2],"DecoupledMR3D") == 0) ) {
double c1_in = 0.0;
double c2_in = 0.0;
double rho_in = 0.0;
WEnergy *wenergy =0;
 
wenergy = new SimoPisterWEnergy(E_in, nu_in);
}
}
if (argc < 7) {
opserr << "Warning: DecoupledNeoHookean3D -insufficient number of arguments\n";
exit (-1);
}
 
// #6 Ogden-Simo
if ((strcmp(argv[0],"-OgdenSimo") == 0) || (strcmp(argv[0],"-OS") == 0) )
{
double E_in = 0.0;
double nu_in = 0.0;
int N_in = 0;
if (Tcl_GetDouble(interp, argv[loc+3], &c1_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid c1 " << argv[loc+3] << "\n";
exit (-1);
}
 
if (argc > 2*N_in+3)
{
if (Tcl_GetDouble(interp, argv[1], &E_in) != TCL_OK)
{
opserr << "Warning: invalid vector parameter number for Ogden Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+4], &c2_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid c2 " << argv[loc+4] << "\n";
exit (-1);
}
 
if (Tcl_GetDouble(interp, argv[2], &nu_in) != TCL_OK)
{
opserr << "Warning: invalid vector parameter number for Ogden Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+5], &rho_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledNeoHookean3D - invalid rho " << argv[loc+5] << "\n";
exit (-1);
}
wenergy = new MooneyRivlinWEnergy(c1_in, c2_in);
if ( wenergy != 0 ) {
theMaterial = new FDdecoupledElastic3D(tag, wenergy, rho_in);
}
else {
opserr << "Error: nDMaterial DecoupledMooneyRivlin3D -invalid material model\n";
exit (-1);
}
}
 
if (Tcl_GetInt(interp, argv[3], &N_in) != TCL_OK)
{
opserr << "Warning: invalid vector parameter number for Ogden Strain Energy Function.";
return 0;
}
// DecoupleOgden3D
else if ( (strcmp(argv[loc+2],"DecoupledOgden3D") == 0) ) {
int N_in = 0;
double rho_in = 0.0;
WEnergy *wenergy =0;
 
if (argc > 2*N_in+4) {
if (Tcl_GetInt(interp, argv[loc+3], &N_in) != TCL_OK) {
opserr << "Warning: invalid vector parameter number for Ogden Strain Energy Function\n";
exit (-1);
}
double *cr_in = new double[N_in];
double *mur_in = new double[N_in];
for (int i=0; i<N_in; i++)
{
if (Tcl_GetDouble(interp, argv[4+i], &cr_in[i]) != TCL_OK)
{
opserr << "Warning: invalid parameter for Ogden Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[4+N_in+i], &mur_in[i]) != TCL_OK)
{
opserr << "Warning: invalid parameter for Ogden Strain Energy Function.";
return 0;
}
 
for (int i=0; i<N_in; i++) {
if (Tcl_GetDouble(interp, argv[loc+4+i], &cr_in[i]) != TCL_OK) {
opserr << "Warning: invalid parameter for Ogden Strain Energy Function\n";
exit (-1);
}
if (Tcl_GetDouble(interp, argv[loc+4+N_in+i], &mur_in[i]) != TCL_OK) {
opserr << "Warning: invalid parameter for Ogden Strain Energy Function\n";
exit (-1);
}
}
 
wenergy = new OgdenSimoWEnergy(E_in, nu_in, N_in, cr_in, mur_in);
}
}
if (Tcl_GetDouble(interp, argv[loc+2*N_in+4], &rho_in) != TCL_OK) {
opserr << "Warning: nDMaterial Ogden - invalid rho\n";
exit (-1);
}
wenergy = new OgdenWEnergy(N_in, cr_in, mur_in);
if ( wenergy != 0 ) {
theMaterial = new FDdecoupledElastic3D(tag, wenergy, rho_in);
//if ( cr_in ) delete cr_in;
//if ( mur_in ) delete mur_in;
}
else {
opserr << "Error: nDMaterial DecoupledOgden3D -invalid material model\n";
exit (-1);
}
}
}
 
// #7 Mooney Rivlin Simo
if ((strcmp(argv[0],"-MRS") == 0) || (strcmp(argv[0],"-MooneyRivlinSimo") == 0) )
{
double E_in = 0.0;
double nu_in = 0.0;
double c1_in = 0.0;
double c2_in = 0.0;
if (argc > 4)
{
if (Tcl_GetDouble(interp, argv[1], &E_in) != TCL_OK)
{
opserr << "Warning: invalid 1st material parameter for Mooney-Rivlin Strain Energy Function.";
return 0;
}
// DecoupledSimoPister3D
else if ( (strcmp(argv[loc+2],"DecoupledSimoPister3D") == 0) || (strcmp(argv[loc+2],"DecoupledSP3D") == 0) ) {
double K_in = 0.0;
double rho_in = 0.0;
WEnergy *wenergy =0;
 
if (Tcl_GetDouble(interp, argv[2], &nu_in) != TCL_OK)
{
opserr << "Warning: invalid 2nd material parameter for Mooney-Rivlin Strain Energy Function.";
return 0;
}
if (argc < 6) {
opserr << "Warning: DecoupledSimoPister3D -insufficient number of arguments\n";
exit (-1);
}
 
if (Tcl_GetDouble(interp, argv[3], &c1_in) != TCL_OK)
{
opserr << "Warning: invalid 1st material parameter for Mooney-Rivlin Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+3], &K_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledSimoPister3D - invalid K " << argv[loc+3] << "\n";
exit (-1);
}
 
if (Tcl_GetDouble(interp, argv[4], &c2_in) != TCL_OK)
{
opserr << "Warning: invalid 2nd material parameter for Mooney-Rivlin Strain Energy Function.";
return 0;
}
if (Tcl_GetDouble(interp, argv[loc+4], &rho_in) != TCL_OK) {
opserr << "Warning: nDMaterial DecoupledSimoPister3D - invalid rho " << argv[loc+4] << "\n";
exit (-1);
}
wenergy = new SimoPisterWEnergy(K_in);
if ( wenergy != 0 ) {
theMaterial = new FDdecoupledElastic3D(tag, wenergy, rho_in);
}
else {
opserr << "Error: nDMaterial DecoupledSimoPister3D -invalid material model\n";
exit (-1);
}
}
// Else
else {
opserr << "Error: nDMaterial - unknown FiniteDeformationElastic3D material model\n";
exit (-1);
}
 
wenergy = new MooneyRivlinSimoWEnergy(E_in, nu_in, c1_in, c2_in);
}
}
//cleanup(argv);
return theMaterial;
 
cleanup(argv);
return wenergy;
 
}
 
 
/trunk/SRC/material/nD/FiniteDeformation/W.h
20,7 → 20,7
//#
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004
//#
//#
//===============================================================================
32,31 → 32,13
#include <Vector.h>
#include <Tensor.h>
 
//#include "LogWEnergy.h"
//#include "MooneyRivlinWEnergy.h"
//#include "NeoHookeanWEnergy.h"
//#include "OgdenWEnergy.h"
//#include "SimoPisterWEnergy.h"
//
#include <ID.h>
 
#include <Channel.h>
//#include <G3Globals.h>
#include <OPS_Globals.h>
 
 
 
//#include <BJvector.h>
//#include <BJtensor.h>
 
class WEnergy
{
public:
WEnergy();
virtual ~WEnergy();
virtual WEnergy*newObj( ) =0;
virtual const double getE();
virtual const double getnu();
 
virtual const double wE(const double &, const Vector &) ;
virtual const Vector disowOdlambda(const Vector &) ;
virtual const Vector d2isowOdlambda2(const Vector &) ;
64,10 → 46,6
virtual const double dvolwOdJ(const double &) ;
virtual const double d2volwOdJ2(const double &) ;
 
protected:
double E;
double nu;
 
};
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_SLS.cpp
New file
0,0 → 1,76
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdEvolution_SLS_CPP
#define fdEvolution_SLS_CPP
 
#include "fdEvolution_SLS.h"
 
// Linear and / or Saturated isotropic hardening
 
//------------------------------------------------------------------------
fdEvolution_SLS::fdEvolution_SLS(double H_linear_in,
double q_saturated_in,
double delta_in)
:H_linear(H_linear_in), q_saturated(q_saturated_in), delta(delta_in)
{
}
 
//------------------------------------------------------------------------
fdEvolution_S * fdEvolution_SLS::newObj()
{
fdEvolution_S *newEL = new fdEvolution_SLS( *this );
return newEL;
}
 
//------------------------------------------------------------------------
double fdEvolution_SLS::HModulus(const stresstensor &sts, const FDEPState &fdepstate) const
{
double xi = fdepstate.getStrainLikeInVar();
return H_linear + delta*q_saturated*exp(-delta*xi);
}
 
//------------------------------------------------------------------------
void fdEvolution_SLS::print()
{
opserr << (*this);
}
 
//------------------------------------------------------------------------
OPS_Stream& operator<< (OPS_Stream& os, const fdEvolution_SLS & fdesl)
{
os.precision(5);
os.width(10);
os << "Linear & Saturate Scalar Linear Evolution Law's Modulus: " << "\n";
os << "H_linear = " << fdesl.H_linear << "; " << "\n";
os << "H_initial = " << fdesl.q_saturated << "; " << "\n";
os << "Delta= " << fdesl.delta << "; " << "\n";
return os;
}
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_S.cpp
New file
0,0 → 1,55
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdEvolution_S_CPP
#define fdEvolution_S_CPP
 
#include "fdEvolution_S.h"
 
fdEvolution_S * fdEvolution_S::newObj()
{
fdEvolution_S *newEL = new fdEvolution_S( *this );
return newEL;
}
 
double fdEvolution_S::HModulus(const stresstensor &sts, const FDEPState &fdepstate) const
{
return 0.0;
}
 
void fdEvolution_S::print()
{
opserr << (*this);
}
 
OPS_Stream& operator<< (OPS_Stream& os, const fdEvolution_S & ev)
{
os << "Scalar Evolution Law's Parameters: " << "\n";
return os;
}
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_T.cpp
New file
0,0 → 1,56
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdEvolution_T_CPP
#define fdEvolution_T_CPP
 
#include "fdEvolution_T.h"
 
fdEvolution_T * fdEvolution_T::newObj()
{
fdEvolution_T *newEL = new fdEvolution_T( *this );
return newEL;
}
 
tensor fdEvolution_T::HModulus(const stresstensor &sts, const FDEPState &fdepstate) const
{
tensor Z400(4, def_dim_4, 0.0);
return Z400;
}
 
void fdEvolution_T::print()
{
opserr << (*this);
}
 
OPS_Stream& operator<< (OPS_Stream& os, const fdEvolution_T & ev)
{
os << "Tensor Evolution Law's Parameters: " << "\n";
return os;
}
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_TL.h
New file
0,0 → 1,56
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdEvolution_TL_H
#define fdEvolution_TL_H
 
#include "fdEvolution_T.h"
 
class fdEvolution_TL : public fdEvolution_T
{
private:
double H_linear;
 
public:
fdEvolution_TL(double H_linear_in = 0.0);
fdEvolution_TL(const stresstensor &sts, const FDEPState &fdepstate);
//virtual ~fdEvolution_TL() {};
 
fdEvolution_T *newObj();
// Derivative of stress like hardening variable to strain like variable
tensor HModulus(const stresstensor &sts, const FDEPState &fdepstate) const;
 
 
void print();
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdEvolution_TL & fdetl);
 
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_SLS.h
New file
0,0 → 1,60
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdEvolution_SLS_H
#define fdEvolution_SLS_H
 
#include "fdEvolution_S.h"
 
class fdEvolution_SLS : public fdEvolution_S
{
private:
double H_linear;
double q_saturated;
double delta;
 
public:
fdEvolution_SLS(double H_linear_in = 0.0,
double q_saturated_in = 0.0,
double delta_in = 0.0);
fdEvolution_SLS(const stresstensor &sts, const FDEPState &fdepstate);
//virtual ~fdEvolution_SLS() {};
 
fdEvolution_S *newObj();
// Derivative of stress like hardening variable to strain like variable
double HModulus(const stresstensor &sts, const FDEPState &fdepstate) const;
 
 
void print();
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdEvolution_SLS & fdesl);
 
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_S.h
New file
0,0 → 1,55
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdEvolution_S_H
#define fdEvolution_S_H
 
#include <stresst.h>
#include <straint.h>
#include <math.h>
 
#include <FDEPState.h>
 
class fdEvolution_S
{
public:
fdEvolution_S() {};
virtual ~fdEvolution_S() {};
 
virtual fdEvolution_S *newObj();
// Derivative of stress like hardening variable to strain like variable
virtual double HModulus(const stresstensor &sts, const FDEPState &fdepstate) const;
 
void print();
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdEvolution_S & ev);
 
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_T.h
New file
0,0 → 1,55
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdEvolution_T_H
#define fdEvolution_T_H
 
#include <stresst.h>
#include <straint.h>
#include <math.h>
 
#include <FDEPState.h>
 
class fdEvolution_T
{
public:
fdEvolution_T() {};
virtual ~fdEvolution_T() {};
 
virtual fdEvolution_T *newObj();
// Derivative of stress like hardening variable to strain like variable
virtual tensor HModulus(const stresstensor &sts, const FDEPState &fdepstate) const;
 
void print();
 
friend OPS_Stream& operator<< (OPS_Stream& os, const fdEvolution_T & ev);
 
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/Makefile
New file
0,0 → 1,23
include ../../../../../Makefile.def
 
OBJS = fdEvolution_S.o \
fdEvolution_SLS.o \
fdEvolution_T.o \
fdEvolution_TL.o
 
all: $(OBJS)
 
# Miscellaneous
 
tidy:
@$(RM) $(RMFLAGS) Makefile.bak *~ #*# core
 
clean: tidy
@$(RM) $(RMFLAGS) $(OBJS) *.o
 
spotless: clean
 
wipe: spotless
 
# DO NOT DELETE THIS LINE -- make depend depends on it.
 
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_TL.cpp
New file
0,0 → 1,73
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef fdEvolution_TL_CPP
#define fdEvolution_TL_CPP
 
#include "fdEvolution_TL.h"
 
//------------------------------------------------------------------------
fdEvolution_TL::fdEvolution_TL(double H_linear_in)
:H_linear(H_linear_in)
{
}
 
//------------------------------------------------------------------------
fdEvolution_T * fdEvolution_TL::newObj()
{
fdEvolution_T *newEL = new fdEvolution_TL( *this );
return newEL;
}
 
//------------------------------------------------------------------------
tensor fdEvolution_TL::HModulus(const stresstensor &sts, const FDEPState &fdepstate) const
{
tensor eta = fdepstate.getStrainLikeKiVar();
tensor I2("I", 2 , def_dim_2);
tensor I4 = I2("ij")*I2("kl"); I4.null_indices();
//I4 = (I4.transpose0110()+I4.transpose0111())*0.5; //For symmetric tensor
I4 = I4.transpose0110(); //For general tensor
return I4*H_linear;
}
 
//------------------------------------------------------------------------
void fdEvolution_TL::print()
{
opserr << (*this);
}
 
//------------------------------------------------------------------------
OPS_Stream& operator<< (OPS_Stream& os, const fdEvolution_TL & fdetl)
{
os.precision(5);
os.width(10);
os << "Tensor Linear Evolution Law's Modulus: " << "\n";
return os;
}
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fdEvolution/tags
New file
0,0 → 1,170
!QøKùìÓÓ Ý+ëL³0J4€¶O÷Û
+ulusMÁ bjMÁolution_S.hMÁolution_S_CPPMybjtion_S_HMyvolution_SMyolution_SMy .hMyint.hMyolution_S_HL¿volution_SL¿ bjL¿
+ulusLÑ
+ulusM·
+ulusN¹
+tQuluson_SLS_HQ bjQolution_SLSQ
+ulusLÑ
+ulusU
+ulusUVUV
+ulus[$
+ulusWì
+ulus1=
+tnewObjÖ9olutionfdEvolution_T.hfdEvolution_T_CPP1Š
+ulusfZ
+HModulus
+print<<^Y
+ulusfZ
+ulusfZ
+ulusÈ
+ulusÈ
+ulusÈ
+ulusÈ
+ulusÈ
+ulusÈ
+ulusÈ
+HModulus
+:()Orolution_S.hingMOrolution_S_CPPMÁ
+tOruluson_Si)Or bjQolution_SLSQolution_SLS_CPPOr
+)Or(FDEPState *fdEPS)Orution_S *()Or
+ulusWì bjWìolution_S.hQ doubleQ{: doubleQ
+tR€:(double H_linear, doX/home/zcheng/OpenSees/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_SLS.hQ ution_S *()(dQ
+Q
+Q
+tY/home/zcheng/OpenSees/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_S.cppQ‘olution_S.hUolution_SLSWì
+tY/home/zcheng/OpenSees/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_S.h0)Wºolution_SLS_CPPsst.h^/home/zcheng/OpenSees/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_SLS.cpp.0)U
+t^/home/zcheng/OpenSees/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_T.hpstate)Wº
+tS*#ution_TL(double H_linear)?double(const stresstensor &sts, const FDEPState &fdepstate)Wºuluson_SLSWº bjWºolution_SLSWºolution_SLS.hT(const s7OPS_Stream(OPS_Stream &os, const fdEvolution_S &ev)Wº)*()Wº(FDEPState *fdEPS)Wºution_S *()W¦ulus_S *()l WœW¦ bjW¦olution_S.hUVolution_S_CPP
+TV.ution_TL(double H_linear_in)ble xi)Wº
+t[æ
+tTßc:(double H_Oution_SLS(double H_linear_in, double q_saturated_in, double delta_in)UVbj.hStatUVolution_S.hU‡$ution_TL(double H_linear_)Wºolution_SLS_CPPVéUI
+)UVution_S *()Wºolution_SLS.hWbWºolution_SLS_CPPW¦ution_S *()V#6(OPS_Stream &os, const fdEvolution_TL &fdet)O(double H_linear_in =0.0, double q_saturated_in =0.0, double delta_in =0.0)Wºolution_SLS.hW5(const stressY/home/zcheng/OpenSees/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_TL.cppW/home/zcheng/OpenSees/SRC/material/nD/FiniteDeformation/fdEvolution/fdEvolution_TL.hWº)nity *Wº
+ulusWº bjWºolution_SLSXF-t stresstensor &sts, double xi)r &)Wºbjron_SWºolution_SLS[æ
+)Wì
+)Y0
+tYvolution_S.hY0bjs;fWì
+ulus^ò bj^òolution_S.h^òolution_S_CPPXÀ.(const stresstensor &sts, FDEPState)YO
+a8friend(OPS_Stream &os, const fdEvolution_TL &fdetl)^ò
+tY¡.(const stresstensor &sts, double xi)YO
+t8OPS_Stream(OPS_Stream &os, const fdEvolution_T &ev)tÏolution_SLS_CPPÏ
+\bnearution\bolution_S.h\bolution_SLS_HtÏolution_SLSZ#ution_TL(double H_linea9(const stresstensor &sts, const FDEPState &fdepstate)tÏ
+t\Ý%(OPS_Stream &os, cons@virtual(const stresstensor &sts, const FDEPState &fdepstate)r|n§Î7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee^ò
+ulus\bbjs
+\bolution_SLS\b
+uluscu bjbñsst.hn_S.h]*bñolution_T_H^n
+a?tensor(const stresstensor &sts, const FDEPState &fdepstate)]&?(const stresstensor &sts, const FDEPState &fdepstate)
+print^ƒ"ution_TL(double H_linea)bñ.hatedtubñint.h^nolution_SLSbØulusuble{bñ bjbñvolution_Tbñolution_TbñState.htÏution_S *()bñfdEvolution_T
+t^nnear.h*()bñl()_S *()^nturatedS()tÏ
+)fdEvolution_S.hfdEvolution_SLS_H_x%ution_S *()^Ã^Îe@bjtÏ6t*olution_SLSolution_SLS.hbØ
+t_`olution_SLScu
+)cuution_S *()cu
+s
+<<
+l()fdEvolution_SLS bj`!fdEvolution_S
+)fdEvolution_T *()
+<<
+
+HModulus`Àution_SLS(;OPS_Stream(OPS_Stream &os, const fdEvolution_TL &fdetl)Èolution_TL.h?tensor(const stresstensor &sts, const FDEPState &fdepstate)È
+ta¥8(OPS_Stream &os, const fdEvolution_SLS &fdesl)OfdEvolution_SLS(double H_linear_in, double q_saturated_in, double delta_in)fZution_S *()?tensor(const stresstensor &sts, const FDEPState &fdepstate)fZ
+)bªream(OPS_Stream &oEdouble const(const stresstensor &sts, const FDEPState &fdepstate)fdEvolution_S_HTGvirtual double(const stresstensor &sts, const FDEPState &fdepstate)
+()
+t3friend(OPS_Stream &os, const fdEvolution_S &ev)bØ
+)dË$fdEvolution_SfdEvo
+void()stresst.h
+virtual()virtual *()fdEvolution_S *()
+H_linear9(const stresstensor &sts, const FDEPState &fdepstate)newObjon_S *()?double(const stresstensor &sts, const FDEPState &fdepstate)
+delta
+double
+double
+doublefdEvolution_S *()e&<ream(OPS_Stream &os, const fdEvolution_SLS &fdesl)tÏution_S *()
+)eY#ution_TL(double H_linear)f¾nearedf—?(const stresstensor &sts, const FDEPState &fdepstate)f¾
+tÈution_T *()ÙÈ
+ulusÈ bjÈolution_TLÈolution_TL_CPPf¾uluson_TLf¾ bjf¾olution_TLfvolution_TL.hÈ
+)fdEvolution_T.hfdEvolution_TL_Hf¾
+)'le H_linear_in =0.0)
+HModulusnewObjslineiJfdEvolution_SLSfdEvolution_SLS.hfdEvolution_SLS_CPPÈution_T *()È
+)
+printÈution_T *()È
+)
+<<
+)Èution_T *()È
+)Èution_T *()È
+)Èution_T *()È
+)Èution_T *()È
+)(double H_linear_in =0.0)fdEvolution_T *()
+HModulusÈution_T *()È
+)fdEvolution_S *()
+<<
+)fdEvolution_T *()
+void()
+void()ºm{Kù 7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee„mÿ7cw ÿÿÿÿ3y1ÿÿÿÿ3ÿÿÿÿcÆ3˜ ÿÿÿÿR¥3¥ÿÿÿÿcÛ3¯ÿÿÿÿS=¨n§{Ñ7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeerorñ 7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeÞo÷lÁ %7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeÞpÕz¬ 07ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeÌq¡
+
+;7bó ÿÿÿÿbÚ1ÿÿÿÿ{À1ÿÿÿÿ2Ô1ÿÿÿÿ2ß1ÿÿÿÿ2ï
+ÿÿÿÿc2ï4@c-34@c534@cB34@Z.Ìrm
+
+E7^o ÿÿÿÿ^[1ÿÿÿÿ_Ÿÿÿÿÿ#cö Gdšcå
+t7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee–w7Ê ÿÿÿÿ6§1ÿÿÿÿ6¼ÿÿÿÿ_<6Ïÿÿÿÿi<6Úÿÿÿÿ`y6ç ÿÿÿÿiQ6ñ&ÿÿÿÿ`)ðx ˆ7b ÿÿÿÿc1ÿÿÿÿci1ÿÿÿÿcQ1ÿÿÿÿ3,1ÿÿÿÿ3<
+ÿÿÿÿc“3<4be3N4cª3a4c·3l4b]4bÐ_24boyux”7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee¨y¼mÿ¢7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeðz¬| ª7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee{Ñx¶7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeestraint.hÌZny¼
+Ä7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeð}ž~Ž Ó7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeevoid()ion_Sð~ŽZn ß7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee„4}žë7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeHModulus_SfdEvolution_S–ìyñ7ÿÿÿeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefdEvolution_TL_CPP
+doubleÌ
+
+4úh£fé4úYÆg'4úhÀgm4úa^gô4úhÕh4úX€
\ No newline at end of file
/trunk/SRC/material/nD/FiniteDeformation/FDdecoupledElastic3D.h
New file
0,0 → 1,130
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef FDdecoupledElastic3D_H
#define FDdecoupledElastic3D_H
 
#include <FiniteDeformationElastic3D.h>
 
#include <W.h> // for W Strain Energy Functions
 
class FDdecoupledElastic3D : public FiniteDeformationElastic3D
{
public:
FDdecoupledElastic3D(int tag, int classTag, WEnergy * , double );
FDdecoupledElastic3D(int tag, WEnergy * , double );
FDdecoupledElastic3D(int tag, WEnergy * );
FDdecoupledElastic3D();
virtual ~FDdecoupledElastic3D();
 
FDdecoupledElastic3D(FDdecoupledElastic3D &fde3d);
 
double getRho(void);
 
int setTrialF(const straintensor &f);
int setTrialFIncr(const straintensor &df);
int setTrialC(const straintensor &c);
int setTrialCIncr(const straintensor &dc);
 
const Tensor& getTangentTensor(void) ; // Default Lagrangian Tangent Tensor
const Tensor& getInitialTangentTensor(void) ;
 
const straintensor getStrainTensor(void) ; // Default Green Lagrangian Strain
const stresstensor getStressTensor(void) ; // Default 2nd Piola Kirchhoff Stress
const straintensor getF(void);
const straintensor getC(void);
 
// virtual const Vector &getStress(void);
// virtual const Vector &getStrain(void);
 
// virtual const stresstensor getCommittedStress(void);
// virtual const straintensor getCommittedStrain(void);
 
// virtual const straintensor getPlasticStrainTensor(void);
 
int commitState(void) ;
int revertToLastCommit(void) ;
int revertToStart(void) ;
 
NDMaterial *getCopy (void);
NDMaterial *getCopy (const char *type);
 
const char *getType (void) const;
int getOrder (void) const;
 
int sendSelf(int commitTag, Channel &theChannel);
int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
 
void Print(OPS_Stream &s, int flag = 0);
 
// int setParameter(char **argv, int argc, Information &info);
// int updateParameter(int parameterID, Information &info);
 
const stresstensor getPK1StressTensor(void) ;
const stresstensor getCauchyStressTensor(void) ;
 
private:
//public:
WEnergy *getWEnergy(void);
 
const double getJ(void) ;
const Vector getlambda(void) ;
const Vector getlambda_wave(void) ;
 
const Vector wa(void) ;
const Tensor Yab(void) ;
const Tensor FDisoStiffness(void) ;
const Tensor FDvolStiffness(void) ;
 
 
// int setInitialTangentTensor(void);
int ComputeTrials(void);
int getCaseIndex(void);
 
protected:
 
WEnergy * W;
 
double rho;
 
straintensor F;
straintensor C;
double J;
straintensor Cinv;
double lambda1, lambda2, lambda3;
double lambda_wave1, lambda_wave2, lambda_wave3;
int caseIndex;
int FromForC;
 
Tensor Stiffness;
straintensor thisGreenStrain;
stresstensor thisPK2Stress;
 
};
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/FiniteDeformationEP3D.cpp
New file
0,0 → 1,1398
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY: July25th2004, Zhao added the Algorithmic Tangent Stiffness
//# for nearly quadratic convergence rate
//===============================================================================
 
#ifndef FiniteDeformationEP3D_CPP
#define FiniteDefornationEP3D_CPP
 
#include "FiniteDeformationEP3D.h"
 
const int Max_Iter = 40;
const double tolerance = 1.0e-8;
 
tensor tensorZ2(2, def_dim_2, 0.0);
tensor tensorI2("I", 2, def_dim_2);
tensor tensorZ4(4, def_dim_4, 0.0);
 
//Constructor 00----------------------------------------------------------------------------------
FiniteDeformationEP3D::FiniteDeformationEP3D()
:NDMaterial(0, 0)
{
fde3d = 0;
fdy = 0;
fdf = 0;
fdEvolutionS = 0;
fdEvolutionT = 0;
fdeps = 0;
 
int err;
err = this->revertToStart();
}
 
// Constructor 01---------------------------------------------------------------------------------
FiniteDeformationEP3D::FiniteDeformationEP3D(int tag,
NDMaterial *fde3d_in,
fdYield *fdy_in,
fdFlow *fdf_in,
fdEvolution_S *fdEvolutionS_in,
fdEvolution_T *fdEvolutionT_in)
:NDMaterial(tag, ND_TAG_FiniteDeformationEP3D)
{
if (fde3d_in)
fde3d = fde3d_in->getCopy();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdElastic3D\n";
exit (-1);
}
if (fdy_in)
fdy = fdy_in->newObj();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdYield\n";
exit (-1);
}
if (fdf_in)
fdf = fdf_in->newObj();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdFlow\n";
exit (-1);
}
if (fdEvolutionS_in)
fdEvolutionS = fdEvolutionS_in->newObj();
else
fdEvolutionS = 0;
 
if (fdEvolutionT_in)
fdEvolutionT = fdEvolutionT_in->newObj();
else
fdEvolutionT = 0;
//if (fdeps == 0)
fdeps = new FDEPState();
}
 
// Constructor 02---------------------------------------------------------------------------------
FiniteDeformationEP3D::FiniteDeformationEP3D(int tag,
NDMaterial *fde3d_in,
fdYield *fdy_in,
fdFlow *fdf_in,
fdEvolution_S *fdEvolutionS_in)
:NDMaterial(tag, ND_TAG_FiniteDeformationEP3D)
{
if (fde3d_in)
fde3d = fde3d_in->getCopy();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdElastic3D\n";
exit (-1);
}
if (fdy_in)
fdy = fdy_in->newObj();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdYield\n";
exit (-1);
}
if (fdf_in)
fdf = fdf_in->newObj();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdFlow\n";
exit (-1);
}
if (fdEvolutionS_in)
fdEvolutionS = fdEvolutionS_in->newObj();
else
fdEvolutionS = 0;
 
fdEvolutionT = 0;
//if (fdeps == 0)
fdeps = new FDEPState();
}
 
// Constructor 03---------------------------------------------------------------------------------
FiniteDeformationEP3D::FiniteDeformationEP3D(int tag,
NDMaterial *fde3d_in,
fdYield *fdy_in,
fdFlow *fdf_in,
fdEvolution_T *fdEvolutionT_in)
:NDMaterial(tag, ND_TAG_FiniteDeformationEP3D)
{
if (fde3d_in)
fde3d = fde3d_in->getCopy();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdElastic3D\n";
exit (-1);
}
if (fdy_in)
fdy = fdy_in->newObj();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdYield\n";
exit (-1);
}
if (fdf_in)
fdf = fdf_in->newObj();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdFlow\n";
exit (-1);
}
fdEvolutionS = 0;
 
if (fdEvolutionT_in)
fdEvolutionT = fdEvolutionT_in->newObj();
else
fdEvolutionT = 0;
//if (fdeps == 0)
fdeps = new FDEPState();
}
 
// Constructor 04---------------------------------------------------------------------------------
FiniteDeformationEP3D::FiniteDeformationEP3D(int tag,
NDMaterial *fde3d_in,
fdYield *fdy_in,
fdFlow *fdf_in)
:NDMaterial(tag, ND_TAG_FiniteDeformationEP3D)
{
if (fde3d_in)
fde3d = fde3d_in->getCopy();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdElastic3D\n";
exit (-1);
}
if (fdy_in)
fdy = fdy_in->newObj();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdYield\n";
exit (-1);
}
if (fdf_in)
fdf = fdf_in->newObj();
else {
opserr << "FiniteDeformationEP3D:: FiniteDeformationEP3D failed to construct the fdFlow\n";
exit (-1);
}
fdEvolutionS = 0;
 
fdEvolutionT = 0;
//if (fdeps == 0)
fdeps = new FDEPState();
}
 
// Destructor-------------------------------------------------------------------------------------
FiniteDeformationEP3D::~FiniteDeformationEP3D()
{
if (fde3d)
delete fde3d;
if (fdy)
delete fdy;
if (fdf)
delete fdf;
if (fdEvolutionS)
delete fdEvolutionS;
 
if (fdEvolutionT)
delete fdEvolutionT;
 
if (fdeps)
delete fdeps;
}
 
//----------------------------------------------------------------------
double FiniteDeformationEP3D::getRho(void)
{
return fde3d->getRho();
}
 
//----------------------------------------------------------------------
int FiniteDeformationEP3D::setTrialF(const straintensor &f)
{
F = f;
 
// Chosse one:
return ImplicitAlgorithm();
//return SemiImplicitAlgorithm();
}
 
//----------------------------------------------------------------------
int FiniteDeformationEP3D::setTrialFIncr(const straintensor &df)
{
return this->setTrialF(this->getF() + df);
}
 
//----------------------------------------------------------------------
const tensor& FiniteDeformationEP3D::getTangentTensor(void)
{
return iniTangent;
}
 
//----------------------------------------------------------------------
const straintensor FiniteDeformationEP3D::getStrainTensor(void)
{
return iniGreen;
}
 
//----------------------------------------------------------------------
const stresstensor FiniteDeformationEP3D::getStressTensor(void)
{
return iniPK2;
}
 
//----------------------------------------------------------------------
const straintensor FiniteDeformationEP3D::getF(void)
{
return F;
}
 
//----------------------------------------------------------------------
const straintensor FiniteDeformationEP3D::getFp(void)
{
return fdeps->getFpInVar();
}
 
//----------------------------------------------------------------------
int FiniteDeformationEP3D::commitState(void)
{
return fdeps->commitState();
}
 
//----------------------------------------------------------------------
int FiniteDeformationEP3D::revertToLastCommit(void)
{
return fdeps->revertToLastCommit();
}
 
//----------------------------------------------------------------------
int FiniteDeformationEP3D::revertToStart(void)
{
return fdeps->revertToStart();
}
 
//----------------------------------------------------------------------
NDMaterial* FiniteDeformationEP3D::getCopy (void)
{
NDMaterial* tmp = new FiniteDeformationEP3D(
this->getTag(),
this->getFDE3D(),
this->getFDY(),
this->getFDF(),
this->getFDEvolutionS(),
this->getFDEvolutionT() );
return tmp;
}
 
//----------------------------------------------------------------------
NDMaterial* FiniteDeformationEP3D::getCopy (const char *code)
{
if ( strcmp(code,"FiniteDeformationEP3D") == 0
|| strcmp(code,"FDEP3D") == 0 )
{
NDMaterial* tmp = new FiniteDeformationEP3D (
this->getTag(),
this->getFDE3D(),
this->getFDY(),
this->getFDF(),
this->getFDEvolutionS(),
this->getFDEvolutionT() );
return tmp;
}
else
{
opserr << "FiniteDeformationEP3D::getCopy fainled:" << code << "\n";
exit(-1);
}
}
 
//----------------------------------------------------------------------
const char* FiniteDeformationEP3D::getType (void) const
{
return "ThreeDimentionalFD";
}
 
//----------------------------------------------------------------------
int FiniteDeformationEP3D::getOrder (void) const
{
return 6;
}
 
//----------------------------------------------------------------------
int FiniteDeformationEP3D::sendSelf(int commitTag, Channel &theChannel)
{
// Not yet implemented
return 0;
}
 
//----------------------------------------------------------------------
int FiniteDeformationEP3D::recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker)
{
// Not yet implemented
return 0;
}
 
//----------------------------------------------------------------------
void FiniteDeformationEP3D::Print(OPS_Stream &s, int flag)
{
s << (*this);
}
 
//----------------------------------------------------------------------
const stresstensor FiniteDeformationEP3D::getCauchyStressTensor(void)
{
return cauchystress;
}
//----------------------------------------------------------------------
NDMaterial * FiniteDeformationEP3D::getFDE3D() const
{
return fde3d;
}
 
//----------------------------------------------------------------------
fdYield * FiniteDeformationEP3D::getFDY() const
{
return fdy;
}
 
//----------------------------------------------------------------------
fdFlow * FiniteDeformationEP3D::getFDF() const
{
return fdf;
}
 
//----------------------------------------------------------------------
fdEvolution_S * FiniteDeformationEP3D::getFDEvolutionS() const
{
return fdEvolutionS;
}
 
//----------------------------------------------------------------------
fdEvolution_T * FiniteDeformationEP3D::getFDEvolutionT() const
{
return fdEvolutionT;
}
 
//----------------------------------------------------------------------
FDEPState * FiniteDeformationEP3D::getFDEPState() const
{
return fdeps;
}
 
 
//----------------------------------------------------------------------
///*//
//----------------------------------------------------------------------
int FiniteDeformationEP3D::ImplicitAlgorithm()
{
// Initializing
double yieldfun = 0.0; // trial value of yield function
double D_gamma = 0.0; // consistency parameter /Delta_{gamma}
double d_gamma = 0.0; // increment of consistency parameter /delta_{gamma}
int iter_counter = 0;
 
straintensor res_Ee = tensorZ2; // residual of intermediate Ee
straintensor res_eta = tensorZ2; // norm of residual of eta
 
double res_xi = 0.0; // residual of strain like internal variable
double res_norm_eta = 0.0; // norm of residual of eta
double res_norm_Ee = 0.0; // norm of residual of intermediate Ee
double residual = 0.0; // residual of Ee and xi and eta
 
straintensor Fp = tensorI2;; // Plastic deformation gradient
double xi = 0.0; // strain like internal isotropic variable
double q = 0.0; // stress like internal isotropic variable
straintensor eta; // strain like internal kinematic variable
stresstensor a; // stress like internal kinematic variable
 
straintensor Fpinv = tensorI2; // inverse of Fp
straintensor Ce = tensorI2; // intermediate C
straintensor Ee = tensorZ2; // intermediate Ee
straintensor Fp_n = tensorI2; // Plastic deformation gradient at time n
straintensor Fp_ninv = tensorI2; // Plastic deformation gradient at time n
straintensor Ee_n = tensorZ2; // Ee at the incremental step n, calculated from Fp_n
double xi_n; // xi at the incremental step n, known
straintensor eta_n = tensorZ2; // eta at the incremental step n, known
stresstensor Mtensor = tensorZ2; // --> dFl/dT
stresstensor MCtensor = tensorZ2; // --> dFl/dS
tensor Ltensor = tensorZ4 ; // Tangent tensor in the intermediate configuration
tensor LATStensor = tensorZ4; // Consistent tangent tensor in the intermediate configuration
double nscalar = 0.0; // --> dFl/d(xi)
double Kscalar = 0.0; // Isotropic hardening modoulus
straintensor ntensor; // --> dFl/d(eta)
tensor Ktensor = tensorZ4; // Kinematic hardening modoulus
stresstensor dyods = tensorZ2 ; // --> dY/d(stress)
double dyodq = 0.0; // --> dY/d(xi)
stresstensor dyoda = tensorZ2 ; // --> dY/d(eta)
 
tensor dMods = tensorZ4; // --> dM/d(stress), from d2Fl/d(stress)d(stress)
tensor dMCods = tensorZ4; // --> dMs/d(stress)
 
double dnsodq = 0.0; // --> d2Fl/dqdq
tensor dntoda = tensorZ4; // --> d2Fl/dada
straintensor D_Ee = tensorZ2;
double D_xi = 0.0;
straintensor D_eta = tensorZ2;
 
tensor A11 = tensorZ4; tensor A12 = tensorZ2; tensor A13 = tensorZ4;
tensor A21 = tensorZ2; double a22 = 0.0; tensor A23 = tensorZ2;
tensor A31 = tensorZ4; tensor A32 = tensorZ2; tensor A33 = tensorZ4;
 
BJmatrix C99(9, 9, 0.0);
BJmatrix CCC(19, 19, 0.0);
 
tensor tensorTemp0;
tensor tensorTemp1;
tensor tensorTemp2;
tensor tensorTemp3;
tensor tensorTemp4;
tensor tensorTemp5;
tensor tensorTemp6;
tensor tensorTemp7;
tensor tensorTemp8;
tensor tensorTemp9;
double temp1 = 0.0;
double temp2 = 0.0;
double temp3 = 0.0;
double temp4 = 0.0;
double temp5 = 0.0;
 
tensor LM = tensorZ4; // For Mandel Tangent Stiffness
stresstensor B_Mandel = tensorZ2; // For Mandel stress
 
tensorTemp3 = tensorI2("ij")*tensorI2("kl");
tensorTemp3.null_indices();
tensor tensorI4 = tensorTemp3.transpose0110();
// Read the previous incremental step history variables
Fp = fdeps->getCommitedFpInVar();
Fp_n = Fp;
Fpinv = Fp.inverse();
Fp_ninv = Fp_n.inverse();
Fe = F("ij")*Fpinv("jk"); Fe.null_indices();
Ce = Fe("ki")*Fe("kj"); Ce.null_indices();
Ee = (Ce - tensorI2) * 0.5;
Ee_n = Ee;
 
xi = fdeps->getCommitedStrainLikeInVar();
xi_n = xi;
q = fdeps->getCommitedStressLikeInVar();
 
if ( fdEvolutionT ) {
eta = fdeps->getCommitedStrainLikeKiVar();
eta_n = eta;
a = fdeps->getCommitedStressLikeKiVar();
}
// Return stress from finite deformation elastic model
fde3d->setTrialC(Ce); // Note: It is C, not F!!!
B_PK2 = fde3d->getStressTensor();
 
B_Mandel = Ce("ik")*B_PK2("kj"); // Mandel Stress
B_Mandel.null_indices();
 
// Evaluate the value of yield function
yieldfun = fdy->Yd(B_Mandel, *fdeps);
//printf("\nY0= %e\n", yieldfun);
 
if ( yieldfun > (fdy->getTolerance()) ) { // start of plastic part
D_gamma = 0.0;
d_gamma = 0.0;
iter_counter = 0;
do { // beginning of do - while
 
// Return Symmetric tensor M and n_scalar and n_tensor
Mtensor = fdf->dFods(B_Mandel, *fdeps);
Mtensor = Ce("ik")*Mtensor("kj");
Mtensor.null_indices();
MCtensor = (Mtensor + Mtensor.transpose11()) * 0.5;
// Return tangent variables
Ltensor = fde3d->getTangentTensor();
tensorTemp1 = tensorI2("ij") *B_PK2("mn");
tensorTemp1.null_indices();
tensorTemp2 = Ce("ik") *Ltensor("kjmn");
tensorTemp2.null_indices();
LM = tensorTemp2 + tensorTemp1.transpose0110() + tensorTemp1.transpose0111();
 
if ( fdEvolutionS) {
nscalar = fdf->dFodq(B_Mandel, *fdeps);
Kscalar = fdEvolutionS->HModulus(B_Mandel, *fdeps);
dyodq = fdy->dYodq(B_Mandel, *fdeps);
dnsodq = fdf->d2Fodqdq(B_Mandel, *fdeps);
}
 
if ( fdEvolutionT) {
ntensor = fdf->dFoda(B_Mandel, *fdeps);
Ktensor = fdEvolutionT->HModulus(B_Mandel, *fdeps);
dyoda = fdy->dYoda(B_Mandel, *fdeps);
dntoda = fdf->d2Fodada(B_Mandel, *fdeps);
}
 
// Return tensor Axx
dyods = fdy->dYods(B_Mandel, *fdeps);
dMods = fdf->d2Fodsds(B_Mandel, *fdeps);
dMCods = Ce("ik")*dMods("kjmn");
dMCods.null_indices();
dMCods = (dMCods + dMCods.transpose1100()) * 0.5;
 
A11 = dMCods("ijmn")*LM("mnkl");
A11.null_indices();
A11 = (A11 *D_gamma) + tensorI4; //A11
 
a22 = (dnsodq *Kscalar*D_gamma) + 1.0; //A22
tensorTemp1 = fdf->d2Fodsdq(B_Mandel, *fdeps);
if ( !(tensorTemp1==tensorZ2) ) {
A12 = Ce("ik") * tensorTemp1("kj");
A12.null_indices();
A12 = (A12 + A12.transpose11()) * (0.5*Kscalar*D_gamma); //A12
A21 = tensorTemp1("ij") * LM("ijkl");
A21.null_indices();
A21 = A21 *D_gamma; //A21
}
 
if ( fdEvolutionT ) {
A33 = dntoda("ijmn")*Ktensor("mnkl");
A33.null_indices();
A33 = (A33 *D_gamma) + tensorI4; //A33
 
tensorTemp2 = fdf->d2Fodsda(B_Mandel, *fdeps);
if ( !(tensorTemp2==tensorZ4) ) {
A13 = Ce("ik") * tensorTemp2("kjmn");
A13.null_indices();
A13 = (A13 + A13.transpose1100()) * (0.5*D_gamma);
A13 = A13("ijmn") * Ktensor("mnkl");
A13.null_indices(); //A13
A31 = tensorTemp2("ijmn") * LM("mnkl");
A31.null_indices();
A31 = A31 *D_gamma; //A31
}
 
tensorTemp3 = fdf->d2Fodqda(B_Mandel, *fdeps);
if ( !(tensorTemp3==tensorZ2) ) {
A23 = tensorTemp3("ij") * Ktensor("ijkl");
A23.null_indices();
A23 = A23 *D_gamma; //A23
A32 = tensorTemp2 * Kscalar *D_gamma; //A32
}
}
 
int i, j;
// CCC: Tensor -> Matrix
C99 = A11.BJtensor2BJmatrix_2();
for (i =1; i <=9; i++) {
for (j =1; j <=9; j++) {
CCC.val(i,j) = C99.cval(i,j);
CCC.val(10+i,10+j) = 1.0; // For non-singularity
}
}
 
CCC.val(1,10) = A12.cval(1,1);
CCC.val(2,10) = A12.cval(1,2);
CCC.val(3,10) = A12.cval(1,3);
CCC.val(4,10) = A12.cval(2,1);
CCC.val(5,10) = A12.cval(2,2);
CCC.val(6,10) = A12.cval(2,3);
CCC.val(7,10) = A12.cval(3,1);
CCC.val(8,10) = A12.cval(3,2);
CCC.val(9,10) = A12.cval(3,3);
 
CCC.val(10,1) = A21.cval(1,1);
CCC.val(10,2) = A21.cval(1,2);
CCC.val(10,3) = A21.cval(1,3);
CCC.val(10,4) = A21.cval(2,1);
CCC.val(10,5) = A21.cval(2,2);
CCC.val(10,6) = A21.cval(2,3);
CCC.val(10,7) = A21.cval(3,1);
CCC.val(10,8) = A21.cval(3,2);
CCC.val(10,9) = A21.cval(3,3);
CCC.val(10,10) = a22;
 
if ( fdEvolutionT ) {
C99 = A13.BJtensor2BJmatrix_2();
for (i =1; i <=9; i++) {
for (j =1; j <=9; j++) {
CCC.val(10+i,j) = C99.cval(i,j);
CCC.val(j,10+i) = C99.cval(i,j);
}
}
 
CCC.val(10,11) = A23.cval(1,1);
CCC.val(10,12) = A23.cval(1,2);
CCC.val(10,13) = A23.cval(1,3);
CCC.val(10,14) = A23.cval(2,1);
CCC.val(10,15) = A23.cval(2,2);
CCC.val(10,16) = A23.cval(2,3);
CCC.val(10,17) = A23.cval(3,1);
CCC.val(10,18) = A23.cval(3,2);
CCC.val(10,19) = A23.cval(3,3);
 
CCC.val(11,10) = A32.cval(1,1);
CCC.val(12,10) = A32.cval(1,2);
CCC.val(13,10) = A32.cval(1,3);
CCC.val(14,10) = A32.cval(2,1);
CCC.val(15,10) = A32.cval(2,2);
CCC.val(16,10) = A32.cval(2,3);
CCC.val(17,10) = A32.cval(3,1);
CCC.val(18,10) = A32.cval(3,2);
CCC.val(19,10) = A32.cval(3,3);
 
C99 = A33.BJtensor2BJmatrix_2();
for (i =1; i <=9; i++) {
for (j =1; j <=9; j++) {
CCC.val(10+i,10+j) = C99.cval(i,j);
}
}
}
 
// Inverse of CCC
//CCC.print("C","\n");
CCC = CCC.inverse();
//CCC.print();
 
// CCC: Matrix -> Tensor
for (i =1; i <=9; i++) {
for (j =1; j <=9; j++) {
C99.val(i,j) = CCC.cval(i,j);
}
}
A11 = C99.BJmatrix2BJtensor_2();
 
A12.val(1,1)=CCC.cval(1,10);
A12.val(1,2)=CCC.cval(2,10);
A12.val(1,3)=CCC.cval(3,10);
A12.val(2,1)=CCC.cval(4,10);
A12.val(2,2)=CCC.cval(5,10);
A12.val(2,3)=CCC.cval(6,10);
A12.val(3,1)=CCC.cval(7,10);
A12.val(3,2)=CCC.cval(8,10);
A12.val(3,3)=CCC.cval(9,10);
 
A21.val(1,1)=CCC.cval(10,1);
A21.val(1,2)=CCC.cval(10,2);
A21.val(1,3)=CCC.cval(10,3);
A21.val(2,1)=CCC.cval(10,4);
A21.val(2,2)=CCC.cval(10,5);
A21.val(2,3)=CCC.cval(10,6);
A21.val(3,1)=CCC.cval(10,7);
A21.val(3,2)=CCC.cval(10,8);
A21.val(3,3)=CCC.cval(10,9);
 
a22 = CCC.cval(10,10);
 
if ( fdEvolutionT ) {
for (i =1; i <=9; i++) {
for (j =1; j <=9; j++) {
C99.val(i,j) = CCC.cval(i,10+j);
}
}
A13 = C99.BJmatrix2BJtensor_2();
 
for (i =1; i <=9; i++) {
for (j =1; j <=9; j++) {
C99.val(j,i) = CCC.cval(10+i,j);
}
}
A31 = C99.BJmatrix2BJtensor_2();
 
A32.val(1,1)=CCC.cval(11,10);
A32.val(1,2)=CCC.cval(12,10);
A32.val(1,3)=CCC.cval(13,10);
A32.val(2,1)=CCC.cval(14,10);
A32.val(2,2)=CCC.cval(15,10);
A32.val(2,3)=CCC.cval(16,10);
A32.val(3,1)=CCC.cval(17,10);
A32.val(3,2)=CCC.cval(18,10);
A32.val(3,3)=CCC.cval(19,10);
 
A23.val(1,1)=CCC.cval(10,11);
A23.val(1,2)=CCC.cval(10,12);
A23.val(1,3)=CCC.cval(10,13);
A23.val(2,1)=CCC.cval(10,14);
A23.val(2,2)=CCC.cval(10,15);
A23.val(2,3)=CCC.cval(10,16);
A23.val(3,1)=CCC.cval(10,17);
A23.val(3,2)=CCC.cval(10,18);
A23.val(3,3)=CCC.cval(10,19);
 
for (i =1; i <=9; i++) {
for (j =1; j <=9; j++) {
C99.val(i,j) = CCC.cval(10+i,10+j);
}
}
A33 = C99.BJmatrix2BJtensor_2();
}
 
// Return d_gamma
tensorTemp6 = dyods("ij")*LM("ijkl");
tensorTemp6.null_indices();
if ( fdEvolutionT ) {
tensorTemp7 = dyoda("ij")*Ktensor("ijkl");
tensorTemp7.null_indices();
}
// !!!tensorTemp6&7 will be used later
 
//Begin, evaluate f^{T}*C
tensorTemp1 = tensorTemp6("kl")*A11("klmn");
tensorTemp1.null_indices();
tensorTemp2 = A21 *(dyodq *Kscalar);
tensorTemp4 = tensorTemp1 + tensorTemp2;
if ( fdEvolutionT ) {
tensorTemp3 = tensorTemp7("kl")*A31("klmn");
tensorTemp3.null_indices();
tensorTemp4 += tensorTemp3;
}
 
tensorTemp1 = tensorTemp6("kl")*A12("kl");
tensorTemp1.null_indices();
temp1 = tensorTemp1.trace();
temp2 = a22 *(dyodq *Kscalar);
temp2 += temp1;
if ( fdEvolutionT ) {
tensorTemp3 = tensorTemp7("kl")*A32("kl");
tensorTemp3.null_indices();
temp3 = tensorTemp3.trace();
temp2 += temp3;
}
 
tensorTemp1 = tensorTemp6("kl")*A13("klmn");
tensorTemp1.null_indices();
tensorTemp2 = A23 *(dyodq *Kscalar);
tensorTemp5 = tensorTemp1 + tensorTemp2;
if ( fdEvolutionT ) {
tensorTemp3 = tensorTemp7("kl")*A33("klmn");
tensorTemp3.null_indices();
tensorTemp5 += tensorTemp3;
}
//End, evaluate f^{T}*C: tensorTemp4-temp2-tensorTemp5
 
 
//Begin, evaluate f^{T}*C*r
tensorTemp1 = tensorTemp4("ij") *res_Ee("ij");
tensorTemp1.null_indices();
temp1 = tensorTemp1.trace();
temp4 = temp1 + temp2*res_xi;
if ( fdEvolutionT ) {
tensorTemp3 = tensorTemp5("ij") *res_eta("ij");
tensorTemp3.null_indices();
temp3 = tensorTemp3.trace();
temp4 += temp3;
}
//End, evaluate f^{T}*C*r: temp4
 
//Begin, evaluate f^{T}*C*m
tensorTemp1 = tensorTemp4("ij") *MCtensor("ij");
tensorTemp1.null_indices();
temp1 = tensorTemp1.trace();
temp5 = temp1 + temp2*nscalar;
if ( fdEvolutionT ) {
tensorTemp3 = tensorTemp5("ij") *ntensor("ij");
tensorTemp3.null_indices();
temp3 = tensorTemp3.trace();
temp5 += temp3;
}
//End, evaluate f^{T}*C*m: temp5
// !!! temp5 will be used later
d_gamma = (yieldfun - temp4) / temp5; // Here is d_gamma!!!
//if(d_gamma < 0.0) d_gamma = 0.0;
//Begin, Calculate incremental variables
tensorTemp2 = MCtensor*(-d_gamma) - res_Ee;
temp2 = nscalar*(-d_gamma) - res_xi;
if ( fdEvolutionT ) {
tensorTemp8 = ntensor*(-d_gamma) - res_eta;
}
 
tensorTemp1 = A11("ijkl") *tensorTemp2("kl");
tensorTemp1.null_indices();
D_Ee = tensorTemp1 + A12*temp2;
if ( fdEvolutionT ) {
tensorTemp3 = A13("ijkl") *tensorTemp8("kl");
tensorTemp3.null_indices();
D_Ee += tensorTemp3;
}
 
tensorTemp1 = A21("kl") *tensorTemp2("kl");
tensorTemp1.null_indices();
temp1 = tensorTemp1.trace();
D_xi = temp1 + a22*temp2 ;
if ( fdEvolutionT ) {
tensorTemp3 = A23("kl") *tensorTemp8("kl");
tensorTemp3.null_indices();
temp3 = tensorTemp3.trace();
D_xi += temp3;
}
 
if ( fdEvolutionT ) {
tensorTemp1 = A31("ijkl") *tensorTemp2("kl");
tensorTemp1.null_indices();
tensorTemp3 = A33("ijkl") *tensorTemp8("kl");
tensorTemp3.null_indices();
D_eta = tensorTemp1 + tensorTemp3 + (A32*temp2);
}
//End, Calculate incremental variables: D_Ee, D_xi, D_eta
 
// Update Variables
D_gamma += d_gamma; // updated D_gamma
 
Ee += D_Ee;
Ce = Ee*2.0 + tensorI2;
fde3d->setTrialC(Ce); // Note: It is C, not F!!!
B_PK2 = fde3d->getStressTensor(); // Updated B_PK2
B_Mandel = Ce("ik")*B_PK2("kj"); // Update Mandel Stress
B_Mandel.null_indices();
 
xi += D_xi;
q += Kscalar*D_xi;
fdeps->setStrainLikeInVar(xi);
fdeps->setStressLikeInVar(q);
 
if ( fdEvolutionT ) {
eta += D_eta;
tensorTemp2 = Ktensor("ijkl")*D_eta("kl");
tensorTemp2.null_indices();
a += tensorTemp2;
fdeps->setStrainLikeKiVar(eta);
fdeps->setStressLikeKiVar(a);
}
 
//Begin, Calculate residuals
res_Ee = (MCtensor*D_gamma) + Ee - Ee_n;
res_xi = (nscalar*D_gamma) + xi - xi_n;
 
tensorTemp1 = res_Ee("ij")*res_Ee("ij");
tensorTemp1.null_indices();
res_norm_Ee = tensorTemp1.trace();
residual = sqrt( res_norm_Ee + res_xi*res_xi );
if ( fdEvolutionT ) {
res_eta = (ntensor*D_gamma) + eta - eta_n;
tensorTemp3 = res_eta("ij")*res_eta("ij");
tensorTemp3.null_indices();
res_norm_eta = tensorTemp3.trace();
residual = sqrt( res_norm_Ee + res_xi*res_xi + res_norm_eta );
}
//End, Calculate residuals: residual
 
yieldfun = fdy->Yd(B_Mandel, *fdeps); // Updated yieldfun
//printf("Y= %e\n ", yieldfun);
 
iter_counter++;
if ( iter_counter > Max_Iter ) {
opserr << "Stop: Iteration More than " << Max_Iter;
opserr << " in return mapping algorithm of FD EP model" << "\n";
exit (-1);
}
 
} while ( yieldfun > fdy->getTolerance() || residual > tolerance ); // end of do - while
 
// For Numerical stability
D_gamma *= (1.0 - tolerance);
if ( D_gamma < 0.0 )
D_gamma = 0.0;
 
// Update Fp
tensorTemp2 = Mtensor("ij")*Fp_n("jk");
tensorTemp2.null_indices();
Fp = Fp_n + tensorTemp2 *D_gamma;
fdeps->setFpInVar(Fp);
Fpinv = Fp.inverse(); //Using the iterative FP
Fe = F("ij")*Fpinv("jk"); Fe.null_indices();
Ce = Fe("ki")*Fe("kj"); Ce.null_indices();
fde3d->setTrialC(Ce); // Note: It is C, not F!!!
B_PK2 = fde3d->getStressTensor();
 
// iniPK2
iniPK2 = Fpinv("ip")*Fpinv("jq")*B_PK2("pq");
iniPK2.null_indices();
//Begin, evaluate the first term of D^{1}
tensorTemp8 = tensorTemp4 * (1.0/temp5);
tensorTemp9 = Mtensor("kj")*tensorTemp8("mn");
tensorTemp9.null_indices();
//End, evaluate the first term of D^{1}: tensorTemp9
 
//Begin, Evaluate \hat{C}^{11}
tensorTemp6 = A11("klmn") *MCtensor("mn");
tensorTemp6.null_indices();
tensorTemp7 = A12 *nscalar;
tensorTemp0 = tensorTemp6 + tensorTemp7;
if ( fdEvolutionT ) {
tensorTemp8 = A13("klmn") *ntensor("mn");
tensorTemp8.null_indices();
tensorTemp0 += tensorTemp8;
}
tensorTemp0 = tensorTemp0("ij")*tensorTemp4("kl");
tensorTemp0.null_indices();
tensorTemp1 = A11 - tensorTemp0*(1.0/temp5);
//End, Evaluate \hat{C}^{11}
 
//Here using the results of tensorTemp1
LATStensor = Ltensor("ijkl")*tensorTemp1("klmn");
LATStensor.null_indices();
//Begin, Evaluate \hat{C}^{21}
tensorTemp6 = A21("mn") *MCtensor("mn");
tensorTemp6.null_indices();
temp1 = tensorTemp6.trace();
temp4 = temp1 + a22 *nscalar;
if ( fdEvolutionT ) {
tensorTemp8 = A23("mn") *ntensor("mn");
tensorTemp8.null_indices();
temp3 = tensorTemp8.trace();
temp4 += temp3;
}
tensorTemp0 = tensorTemp4 *temp4;
tensorTemp2 = A21 - tensorTemp0*(1.0/temp5);
//End, Evaluate \hat{C}^{21}
//Begin, Evaluate \hat{C}^{31}
if ( fdEvolutionT ) {
tensorTemp6 = A31("klmn") *MCtensor("mn");
tensorTemp6.null_indices();
tensorTemp7 = A32 *nscalar;
tensorTemp8 = A33("klmn") *ntensor("mn");
tensorTemp8.null_indices();
tensorTemp0 = tensorTemp6 + tensorTemp7 + tensorTemp8;
tensorTemp0 = tensorTemp0("ij")*tensorTemp4("kl");
tensorTemp0.null_indices();
tensorTemp3 = A31 - tensorTemp0*(1.0/temp5);
}
//End, Evaluate \hat{C}^{31}
 
// Begin...
tensorTemp6 = (fdf->d2Fodsds(B_Mandel, *fdeps))("ijkl") *LM("klmn");
tensorTemp6.null_indices();
tensorTemp7 = (fdf->d2Fodsdq(B_Mandel, *fdeps)) *Kscalar;
if ( fdEvolutionT ) {
tensorTemp8 = (fdf->d2Fodada(B_Mandel, *fdeps))("ijkl")*Ktensor("klmn");
tensorTemp8.null_indices();
}
 
tensorTemp5 = tensorTemp6("ijkl")*tensorTemp1("klmn");
tensorTemp5.null_indices();
tensorTemp1 = tensorTemp7("ij")*tensorTemp2("mn");
tensorTemp1.null_indices();
tensorTemp5 += tensorTemp1;
if ( fdEvolutionT ) {
tensorTemp2 = tensorTemp8("ijkl")*tensorTemp3("klmn");
tensorTemp2.null_indices();
tensorTemp5 += tensorTemp2;
}
tensorTemp9 += (tensorTemp5 *D_gamma);
tensorTemp9 = Fp_ninv("it") * tensorTemp9("tjmn");
tensorTemp9.null_indices();
// ...End
 
tensorTemp5 = tensorI2("il")*Fpinv("nj")*B_PK2("nk")*tensorTemp9("klpq");
tensorTemp5.null_indices();
tensorTemp6 = Fpinv("ni")*tensorI2("jl")*B_PK2("nk")*tensorTemp9("klpq");
tensorTemp6.null_indices();
 
tensorTemp1 = Fpinv("im") * Fpinv("jn");
tensorTemp1.null_indices();
 
tensorTemp7 = tensorTemp1("imjn") * LATStensor("mnrs");
tensorTemp8.null_indices();
 
tensorTemp8 = tensorTemp7 - tensorTemp5 - tensorTemp6;
 
tensorTemp2 = Fp_ninv("kr") * Fp_ninv("ls");
tensorTemp2.null_indices();
 
iniTangent = tensorTemp8("ijrs") * tensorTemp2("krls");
iniTangent.null_indices();
} // end of plastic part
else { // start of elastic part
Fe = F("ij") * Fp_ninv("jk");
Fe.null_indices();
Ce = Fe("ki") * Fe("kj");
Ce.null_indices();
fde3d->setTrialC(Ce); // Note: It is C, not F!!!
B_PK2 = fde3d->getStressTensor();
iniPK2 = Fp_ninv("ip")*Fp_ninv("jq")*B_PK2("pq");
iniPK2.null_indices();
LATStensor = fde3d->getTangentTensor();
 
tensorTemp1 = Fp_ninv("im")*Fp_ninv("jn");
tensorTemp1.null_indices();
tensorTemp2 = Fp_ninv("kr")*Fp_ninv("ls");
tensorTemp2.null_indices();
tensorTemp3 = tensorTemp1("imjn")*LATStensor("mnrs");
tensorTemp3.null_indices();
iniTangent = tensorTemp3("ijrs")*tensorTemp2("krls");
iniTangent.null_indices();
}
iniGreen = F("ki")*F("kj");
iniGreen.null_indices();
iniGreen = (iniGreen - tensorI2) * 0.5;
 
cauchystress = Fe("ip")*B_PK2("pq");
cauchystress.null_indices();
cauchystress = cauchystress("iq")*Fe("jq");
cauchystress.null_indices();
cauchystress = cauchystress*(1.0/F.determinant());
 
return 0;
}
//*/
 
//----------------------------------------------------------------------
//Mandel Version
int FiniteDeformationEP3D::SemiImplicitAlgorithm()
{
// *** This is the key function ***
 
 
// Initializing
double yieldfun = 0.0; // trial value of yield function
double D_gamma = 0.0; // consistency parameter /Delta_{gamma}
double d_gamma = 0.0; // increment of consistency parameter /delta_{gamma}
int iter_counter = 0;
 
straintensor res_Ee = tensorZ2; // residual of intermediate Ee
straintensor res_eta = tensorZ2; // norm of residual of eta
 
straintensor Fp = tensorI2;; // Plastic deformation gradient
double xi = 0.0; // strain like internal isotropic variable
double q = 0.0; // stress like internal isotropic variable
straintensor eta; // strain like internal kinematic variable
stresstensor a; // stress like internal kinematic variable
 
straintensor Fpinv = tensorI2; // inverse of Fp
straintensor Ce = tensorI2; // intermediate C
straintensor Ee = tensorZ2; // intermediate Ee
straintensor Fp_n = tensorI2; // Plastic deformation gradient at time n
straintensor Fp_ninv = tensorI2; // Plastic deformation gradient at time n
straintensor Ee_n = tensorZ2; // Ee at the incremental step n, calculated from Fp_n
double xi_n; // xi at the incremental step n, known
straintensor eta_n = tensorZ2; // eta at the incremental step n, known
stresstensor Mtensor = tensorZ2; // --> dFl/dT
stresstensor MCtensor = tensorZ2; // --> dFl/dS
tensor Ltensor = tensorZ4 ; // Tangent tensor in the intermediate configuration
tensor LATStensor = tensorZ4; // Consistent tangent tensor in the intermediate configuration
double nscalar = 0.0; // --> dFl/d(xi)
double Kscalar = 0.0; // Isotropic hardening modoulus
straintensor ntensor; // --> dFl/d(eta)
tensor Ktensor = tensorZ4; // Kinematic hardening modoulus
stresstensor dyods = tensorZ2 ; // --> dY/d(stress)
double dyodq = 0.0; // --> dY/d(xi)
stresstensor dyoda = tensorZ2 ; // --> dY/d(eta)
straintensor D_Ee = tensorZ2;
double D_xi = 0.0;
straintensor D_eta = tensorZ2;
 
tensor tensorTemp0;
tensor tensorTemp1;
tensor tensorTemp2;
tensor tensorTemp3;
tensor tensorTemp4;
tensor tensorTemp5;
double temp0 = 0.0;
double lowerPart = 0.0;
 
tensor LM = tensorZ4; // For Mandel Tangent Stiffness
stresstensor B_Mandel = tensorZ2; // For Mandel stress
 
tensorTemp1 = tensorI2("ij")*tensorI2("kl");
tensorTemp1.null_indices();
tensor tensorI4 = tensorTemp1.transpose0110();
// Read the previous incremental step history variables
Fp = fdeps->getCommitedFpInVar();
Fp_n = Fp;
Fp_ninv = Fp_n.inverse();
Fpinv = Fp.inverse();
Fe = F("ij")*Fpinv("jk"); Fe.null_indices();
Ce = Fe("ki")*Fe("kj"); Ce.null_indices();
Ee = (Ce - tensorI2) * 0.5;
Ee_n = Ee;
 
xi = fdeps->getCommitedStrainLikeInVar();
xi_n = xi;
q = fdeps->getCommitedStressLikeInVar();
 
if ( fdEvolutionT ) {
eta = fdeps->getCommitedStrainLikeKiVar();
eta_n = eta;
a = fdeps->getCommitedStressLikeKiVar();
}
// Return stress from finite deformation elastic model
fde3d->setTrialC(Ce); // Note: It is C, not F!!!
B_PK2 = fde3d->getStressTensor();
 
B_Mandel = Ce("ik")*B_PK2("kj"); // Mandel Stress
B_Mandel.null_indices();
 
// Evaluate the value of yield function
yieldfun = fdy->Yd(B_Mandel, *fdeps);
//printf("\nY0= %e\n", yieldfun);
 
if ( yieldfun > (fdy->getTolerance()) ) { // start of plastic part
D_gamma = 0.0;
d_gamma = 0.0;
iter_counter = 0;
Mtensor = fdf->dFods(B_Mandel, *fdeps);
// MCtensor = Ce("ik")*Mtensor("kj");
// MCtensor.null_indices();
// MCtensor = (MCtensor + MCtensor.transpose11()) * 0.5;
nscalar = fdf->dFodq(B_Mandel, *fdeps);
if ( fdEvolutionS)
nscalar = fdf->dFodq(B_Mandel, *fdeps);
do { // beginning of do - while
MCtensor = Ce("ik")*Mtensor("kj");
MCtensor.null_indices();
MCtensor = (MCtensor + MCtensor.transpose11()) * 0.5;
// Return tangent variables
Ltensor = fde3d->getTangentTensor();
tensorTemp1 = tensorI2("ij") *B_PK2("mn");
tensorTemp1.null_indices();
tensorTemp2 = Ce("ik") *Ltensor("kjmn");
tensorTemp2.null_indices();
LM = tensorTemp2 + tensorTemp1.transpose0110() + tensorTemp1.transpose0111();
dyods = fdy->dYods(B_Mandel, *fdeps);
Kscalar = fdEvolutionS->HModulus(B_Mandel, *fdeps);
dyodq = fdy->dYodq(B_Mandel, *fdeps);
 
if ( fdEvolutionT) {
Ktensor = fdEvolutionT->HModulus(B_Mandel, *fdeps);
dyoda = fdy->dYoda(B_Mandel, *fdeps);
}
 
// Return d_gamma
tensorTemp4 = dyods("ij")*LM("ijkl");
tensorTemp4.null_indices();
tensorTemp1 = tensorTemp4("kl")*MCtensor("kl");
tensorTemp1.null_indices();
lowerPart = tensorTemp1.trace();
lowerPart += dyodq * Kscalar * nscalar;
if ( fdEvolutionT ) {
tensorTemp5 = dyoda("ij")*Ktensor("ijkl");
tensorTemp5.null_indices();
tensorTemp2 = tensorTemp5("kl")*ntensor("kl");
tensorTemp2.null_indices();
temp0 = tensorTemp2.trace();
lowerPart += temp0;
}
if (lowerPart != 0.0)
d_gamma = yieldfun / lowerPart;
//if(d_gamma < 0.0) d_gamma = 0.0;
//printf("d_gamma= %e\n ", d_gamma);
//Begin, Calculate incremental variables
D_Ee = MCtensor * (-d_gamma);
D_xi = nscalar * (-d_gamma);
if ( fdEvolutionT )
D_eta = ntensor * (-d_gamma);
 
// Update Variable
D_gamma += d_gamma; // updated D_gamma
 
Ee += D_Ee;
Ce = Ee*2.0 + tensorI2;
fde3d->setTrialC(Ce); // Note: It is C, not F!!!
B_PK2 = fde3d->getStressTensor(); // Updated B_PK2
B_Mandel = Ce("ik")*B_PK2("kj"); // Update Mandel Stress
B_Mandel.null_indices();
 
xi += D_xi;
q += (Kscalar * D_xi);
fdeps->setStrainLikeInVar(xi);
fdeps->setStressLikeInVar(q);
 
if ( fdEvolutionT ) {
eta += D_eta;
tensorTemp1 = Ktensor("ijkl") *D_eta("kl");
tensorTemp1.null_indices();
a += tensorTemp1;
fdeps->setStrainLikeKiVar(eta);
fdeps->setStressLikeKiVar(a);
}
 
yieldfun = fdy->Yd(B_Mandel, *fdeps); // Updated yieldfun
//printf("Y= %e\n ", yieldfun);
 
iter_counter++;
if ( iter_counter > Max_Iter ) {
opserr << "Stop: Iteration More than " << Max_Iter;
opserr << " in return mapping algorithm of FD EP model" << "\n";
exit (-1);
}
 
} while ( yieldfun > fdy->getTolerance() ); // end of do - while
 
// For Numerical stability
D_gamma *= (1.0 - tolerance);
if ( D_gamma < 0.0 )
D_gamma = 0.0;
 
// Update Fp
tensorTemp2 = Mtensor("ij")*Fp_n("jk");
tensorTemp2.null_indices();
Fp = Fp_n + (tensorTemp2 *D_gamma);
fdeps->setFpInVar(Fp);
// Return iniTangent and iniPK2
Fpinv = Fp.inverse(); //Using the iterative FP
Fe = F("ij")*Fpinv("jk");
Fe.null_indices();
Ce = Fe("ki")*Fe("kj");
Ce.null_indices();
fde3d->setTrialC(Ce); // Note: It is C, not F!!!
B_PK2 = fde3d->getStressTensor();
 
//iniPK2 = B_PK2;
iniPK2 = Fpinv("ip")*Fpinv("jq")*B_PK2("pq");
iniPK2.null_indices();
tensorTemp5 = Ltensor("ijkl") * MCtensor("kl");
tensorTemp5.null_indices();
 
tensorTemp3 = tensorTemp5("ij") * tensorTemp4("mn");
tensorTemp3.null_indices();
if (lowerPart != 0.0)
LATStensor = Ltensor - ( tensorTemp3 * (1.0/lowerPart) );
 
tensorTemp1 = Mtensor("ri")*Fpinv("lj")*Fp_ninv("kr")*B_PK2("kl");
tensorTemp1.null_indices();
tensorTemp2 = Fpinv("ki")*Mtensor("rj")*Fp_ninv("lr")*B_PK2("kl");
tensorTemp2.null_indices();
tensorTemp3 = tensorTemp1 + tensorTemp2;
tensorTemp5 = tensorTemp3("ij") * tensorTemp4("mn");
tensorTemp5.null_indices();
tensorTemp1 = Fpinv("im") * Fpinv("jn");
tensorTemp1.null_indices();
tensorTemp3 = tensorTemp1("imjn") * LATStensor("mnrs");
tensorTemp3.null_indices();
 
tensorTemp3 = tensorTemp3 - ( tensorTemp5 * (1.0/lowerPart) );
 
tensorTemp2 = Fpinv("kr") * Fpinv("ls");
tensorTemp2.null_indices();
iniTangent = tensorTemp3("ijrs") * tensorTemp2("krls");
iniTangent.null_indices();
} // end of plastic part
else { // start of elastic part
// Return iniTangent and iniPK2
Fe = F("ij") * Fp_ninv("jk");
Fe.null_indices();
Ce = Fe("ki") * Fe("kj");
Ce.null_indices();
fde3d->setTrialC(Ce); // Note: It is C, not F!!!
B_PK2 = fde3d->getStressTensor();
 
//iniPK2 = B_PK2;
iniPK2 = Fp_ninv("ip")*Fp_ninv("jq")*B_PK2("pq");
iniPK2.null_indices();
LATStensor = fde3d->getTangentTensor();
 
tensorTemp1 = Fp_ninv("im") * Fp_ninv("jn");
tensorTemp1.null_indices();
tensorTemp2 = Fp_ninv("kr") * Fp_ninv("ls");
tensorTemp2.null_indices();
tensorTemp3 = tensorTemp1("imjn") * LATStensor("mnrs");
tensorTemp3.null_indices();
iniTangent = tensorTemp3("ijrs") * tensorTemp2("krls");
iniTangent.null_indices();
} // end of elastic part
iniGreen = F("ki") * F("kj");
iniGreen.null_indices();
iniGreen = (iniGreen - tensorI2) * 0.5;
 
cauchystress = Fe("ip") * B_PK2("pq");
cauchystress.null_indices();
cauchystress = cauchystress("iq") * Fe("jq");
cauchystress.null_indices();
cauchystress = cauchystress * (1.0/F.determinant());
return 0;
}
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/MooneyRivlinSimoWEnergy.cpp
29,35 → 29,23
#ifndef MooneyRivlinSimoWEnergy_CPP
#define MooneyRivlinSimoWEnergy_CPP
 
#include <math.h>
#include <MooneyRivlinSimoWEnergy.h>
 
//================================================================================
// Normal constructor
//================================================================================
MooneyRivlinSimoWEnergy::MooneyRivlinSimoWEnergy( double E_in, double nu_in, double c1_in, double c2_in)
MooneyRivlinSimoWEnergy::MooneyRivlinSimoWEnergy(double c1_in, double c2_in, double K_in)
: c1(c1_in), c2(c2_in), K(K_in)
{
E = E_in;
nu = nu_in;
c1 = c1_in;
c2 = c2_in;
if (nu != -1.0)
G = 0.5*E/(1.0+nu);
else
opserr << "Poisson's ratio = -1.0, not permited for this model (MooneyRivlinSimoWEnergy)";
if (nu != 0.5)
K = 0.33333333333333*E/(1.0-2.0*nu);
else
opserr << "Poisson's ratio = 0.5, not permited for this model (MooneyRivlinSimoWEnergy)";
// K = 1.0e20;
 
}
 
//MooneyRivlinSimoWEnergy::MooneyRivlinSimoWEnergy( )
//{
//
//}
MooneyRivlinSimoWEnergy::MooneyRivlinSimoWEnergy( )
: c1(0.0), c2(0.0), K(0.0)
{
 
}
 
//================================================================================
// Normal destructor
//================================================================================
71,20 → 59,11
//================================================================================
WEnergy * MooneyRivlinSimoWEnergy::newObj()
{
WEnergy *new_WEnergy = new MooneyRivlinSimoWEnergy (E, nu, c1, c2);
WEnergy *new_WEnergy = new MooneyRivlinSimoWEnergy (c1, c2, K);
return new_WEnergy;
}
 
const double MooneyRivlinSimoWEnergy::getE()
{
return E;
}
 
const double MooneyRivlinSimoWEnergy::getnu()
{
return nu;
}
 
//================================================================================
// w
//================================================================================
142,5 → 121,6
return d2colwOverdJ2;
}
 
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/FDEPState.h
New file
0,0 → 1,96
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
#ifndef FDEPState_H
#define FDEPState_H
 
#include <Tensor.h>
#include <stresst.h>
#include <straint.h>
 
class FDEPState {
public:
FDEPState();
FDEPState ( const straintensor& xFpInVar,
double xStressLikeInVar,
double xStrainLikeInVar,
const stresstensor& xStressLikeKiVar,
const straintensor& xStrainLikeKiVar,
const straintensor& xCommitedFpInVar,
double xCommitedStressLikeInVar,
double xCommitedStrainLikeInVar,
const stresstensor& xCommitedStressLikeKiVar,
const straintensor& xCommitedStrainLikeKiVar);
~FDEPState();
FDEPState *newObj();
FDEPState( const FDEPState& fdeps );
straintensor getFpInVar() const;
double getStressLikeInVar() const;
double getStrainLikeInVar() const;
stresstensor getStressLikeKiVar() const;
straintensor getStrainLikeKiVar() const;
straintensor getCommitedFpInVar() const;
double getCommitedStressLikeInVar() const;
double getCommitedStrainLikeInVar() const;
stresstensor getCommitedStressLikeKiVar() const;
straintensor getCommitedStrainLikeKiVar() const;
void setFpInVar(const straintensor& xFpInVar);
void setStressLikeInVar(double xStressLikeInVar);
void setStrainLikeInVar(double xStrainLikeInVar);
void setStressLikeKiVar(const stresstensor& xStressLikeKiVar);
void setStrainLikeKiVar(const straintensor& xStrainLikeKiVar);
void setCommitedFpInVar(const straintensor& xCommitedFpInVar);
void setCommitedStressLikeInVar(double xCommitedStressLikeInVar);
void setCommitedStrainLikeInVar(double xCommitedStrainLikeInVar);
void setCommitedStressLikeKiVar(const stresstensor& xCommitedStressLikeKiVar);
void setCommitedStrainLikeKiVar(const straintensor& xCommitedStrainLikeKiVar);
 
int commitState(void) ;
int revertToLastCommit(void) ;
int revertToStart(void) ;
 
private:
straintensor FpInVar; // Plastic F;
double StressLikeInVar; // Scalar stress like evolution variable
double StrainLikeInVar; // Scalar strain like evolution variable
stresstensor StressLikeKiVar; // Tensor stress like evolution variable
straintensor StrainLikeKiVar; // Tensor strain like evolution variable
 
 
straintensor CommitedFpInVar; // Plastic F;
double CommitedStressLikeInVar; // Scalar stress like evolution variable
double CommitedStrainLikeInVar; // Scalar strain like evolution variable
stresstensor CommitedStressLikeKiVar; // Tensor stress like evolution variable
straintensor CommitedStrainLikeKiVar; // Tensor strain like evolution variable
 
};
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/OgdenSimoWEnergy.cpp
20,7 → 20,7
//#
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004
//#
//#
//===============================================================================
29,39 → 29,27
#ifndef OgdenSimoWEnergy_CPP
#define OgdenSimoWEnergy_CPP
 
#include <math.h>
#include <OgdenSimoWEnergy.h>
 
//================================================================================
// Normal constructor
//================================================================================
OgdenSimoWEnergy::OgdenSimoWEnergy(double E_in, double nu_in, int N_in, double *cr_in, double *mur_in )
OgdenSimoWEnergy::OgdenSimoWEnergy(int N_in, double *cr_in, double *mur_in, double K_in)
{
E = E_in;
nu = nu_in;
N_Ogden = N_in;
cr_Ogden = cr_in;
mur_Ogden = mur_in;
mur_Ogden = mur_in;
K = K_in;
}
 
 
if (nu != -1.0)
G = 0.5*E/(1.0+nu);
else
opserr << "Poisson's ratio = -1.0, not permited for this model (OgdenSimoWEnergy)";
 
 
if (nu != 0.5)
K = 0.3333333333333333*E/(1.0-2.0*nu);
else
opserr << "Poisson's ratio = 0.5, not permited for this model (OgdenSimoWEnergy)";
// K = 1.0e20;
OgdenSimoWEnergy::OgdenSimoWEnergy( )
{
N_Ogden = 0;
cr_Ogden = 0;
mur_Ogden = 0;
K = 0.0;
}
 
//OgdenSimoWEnergy::OgdenSimoWEnergy( )
//{
//
//}
 
//================================================================================
// Normal destructor
//================================================================================
75,20 → 63,11
//================================================================================
WEnergy * OgdenSimoWEnergy::newObj( )
{
WEnergy *new_WEnergy = new OgdenSimoWEnergy( E, nu, N_Ogden, cr_Ogden, mur_Ogden);
WEnergy *new_WEnergy = new OgdenSimoWEnergy(N_Ogden, cr_Ogden, mur_Ogden, K);
return new_WEnergy;
}
 
const double OgdenSimoWEnergy::getE()
{
return E;
}
 
const double OgdenSimoWEnergy::getnu()
{
return nu;
}
 
//================================================================================
// w
//================================================================================
156,5 → 135,6
return d2colwOverdJ2;
}
 
#endif
 
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/LogWEnergy.h
20,7 → 20,7
//#
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004
//#
//#
//===============================================================================
33,34 → 33,29
#include <Vector.h>
#include <Tensor.h>
#include <math.h>
#include <OPS_Globals.h>
#include <W.h>
 
 
class LogWEnergy : public WEnergy
{
private:
 
double E;
double nu;
double K;
double K;
double G;
public:
 
public:
LogWEnergy(double , double );
// LogWEnergy();
LogWEnergy();
~LogWEnergy();
WEnergy *newObj( );
 
const double getE();
const double getnu();
const double wE(const double &, const Vector &) ;
const Vector disowOdlambda(const Vector &) ;
const Vector d2isowOdlambda2(const Vector &) ;
// const tensor d2isowOdlambda1dlambda2(const Vector &) ;
//const tensor d2isowOdlambda1dlambda2(const Vector &) ;
const double dvolwOdJ(const double &) ;
const double d2volwOdJ2(const double &) ;
 
// friend OPS_Stream& operator<< (OPS_Stream& os, const LogWEnergy &W);
};
 
#endif
/trunk/SRC/material/nD/FiniteDeformation/fd_test.cpp
32,10 → 32,10
#include <stdio.h>
#include <iostream.h>
 
#include <Vector.h>
#include <Tensor.h>
#include <BJvector.h>
#include <BJtensor.h>
//#include <Vector.h>
//#include <Tensor.h>
//#include <BJvector.h>
//#include <BJtensor.h>
 
#include "FiniteDeformationElastic3D.h"
 
66,7 → 66,7
 
 
 
 
#include "FDdecoupledElastic3D.h"
#include "FiniteDeformationElastic3D.h"
#include "W.h"
#include "LogWEnergy.h"
82,8 → 82,8
printf("\n\n\n*** Finite Deformations: T E S T ***\n\n");
 
double rho_in = 0.0;
double E_in = 11.83e5;
double nu_in = 0.4;
double K_in = 1971.67;
double G_in = 422.5;
 
////********** for Odegen
//int Nogden = 3;
101,11 → 101,11
//double c2_in = 0.2640625e5;
 
printf(" rho = %.12e\n",rho_in);
printf(" Ey = %.12e\n",E_in);
printf(" nu = %.12e\n",nu_in);
printf(" K = %.12e\n",K_in);
printf(" G = %.12e\n",G_in);
 
//LogWEnergy thisFDW( E_in, nu_in );
NeoHookeanWEnergy thisFDW( E_in, nu_in );
NeoHookeanWEnergy thisFDW( K_in, G_in );
//SimoPisterWEnergy thisFDW( E_in, nu_in );
//OgdenWEnergy thisFDW( E_in, nu_in, Nogden, cr, mur);
//MooneyRivlinWEnergy thisFDW( E_in, nu_in, c1_in, c2_in );
113,11 → 113,11
//MooneyRivlinSimoWEnergy thisFDW( E_in, nu_in, c1_in, c2_in );
 
 
FiniteDeformationElastic3D thisFDstate( 0, 0, &thisFDW, rho_in);
FDdecoupledElastic3D thisFDstate( 0, 0, &thisFDW, rho_in);
 
double gammastart = 0.0;
double gammaend = 0.0011;
double deltagamma = 0.001;
double gammaend = 0.11;
double deltagamma = 0.1;
printf(" gammastart = %.12e\n",gammastart);
printf(" gammaend = %.12e\n",gammaend);
printf(" deltagamma = %.12e\n",deltagamma);
180,25 → 180,73
 
 
double F_values[] = { F11, F12, F13,
F21, F22, F23,
F31, F32, F33 };
F21, F22, F23,
F31, F32, F33 };
 
Tensor thisf(2, def_dim_2, F_values);
Tensor thisf(2, def_dim_2, F_values);
thisf.print("F","\n");
thisFDstate.setTrialF(thisf);
// Tensor thisC = thisFDstate.getC();
// thisC.print("C","\n");
// tensor eigtensor = thisC.eigenvalues();
// tensor eigvector = thisC.eigenvectors();
// eigtensor.print("U","\n");
// eigvector.print("R","\n");
 
// Tensor thisb = thisf("im")*thisf("jm");
// thisb.null_indices();
// thisb.print("b","\n");
// tensor eigtensorb = thisb.eigenvalues();
// tensor eigvectorb = thisb.eigenvectors();
// eigtensorb.print("Ub","\n");
// eigvectorb.print("Rb","\n");
 
 
// double thisJ = thisFDstate.getJ();
// printf("\nJ = %lf\n", thisJ);
 
// Tensor Cinv = thisC.inverse();
// Cinv.print("Cinv","\nInverse of C:");
// Tensor CinvCinv = Cinv("ij")*Cinv("kl") ;
// CinvCinv.null_indices();
// Tensor ICinv = ( CinvCinv.transpose0110() + CinvCinv.transpose0111() ) * (-0.5);
// ICinv.print("ICinv","\nICinv:");
 
Tensor thisPK2Stress = thisFDstate.getStressTensor();
thisPK2Stress.print("PK2","\n2nd PK Stress Tensor:");
// Vector lambda = thisFDstate.getlambda(); // Need change to "Public" for this function
// printf("\nLambda1,2,3 = %e; %e; %e\n", lambda(0), lambda(1), lambda(2));
 
// Tensor thisK = thisFDstate.FDvolStiffness();
// thisK.print("K","\nTangent:");
 
// Tensor thisPK2Stress = thisFDstate.getStressTensor();
// thisPK2Stress.print("PK2","\n2nd PK Stress Tensor:");
// tensor eigValuesPK2 = thisPK2Stress.eigenvalues();
// tensor eigVectorsPK2 = thisPK2Stress.eigenvectors();
// eigValuesPK2.print("UPK2","\n");
// eigVectorsPK2.print("RPK2","\n");
// tensor thisMandel = thisC("ik")*thisPK2Stress("kj");
// thisMandel.null_indices();
// thisMandel.print("M","\n");
// tensor eigValuesM = thisMandel.eigenvalues();
// tensor eigVectorsM = thisMandel.eigenvectors();
// eigValuesM.print("UM","\n");
// eigVectorsM.print("RM","\n");
 
 
// Tensor thisFPKStress = thisFDstate.getPK1StressTensor();
// thisPK1Stress.print("P","\n1st PK Stress Tensor:");
stresstensor tStress = thisFDstate.getCauchyStressTensor();
tStress.print("Sigma","Cauchy Stress tensor:");
// tensor eigValuest = tStress.eigenvalues();
// tensor eigVectorst = tStress.eigenvectors();
// eigValuest.print("Ut","\n");
// eigVectorst.print("Rt","\n");
 
}
return 1;
return 1;
}
 
/trunk/SRC/material/nD/FiniteDeformation/NeoHookeanCompressible3D.h
New file
0,0 → 1,102
//===============================================================================
//# COPYRIGHT (C): Woody's license (by BJ):
// ``This source code is Copyrighted in
// U.S., for an indefinite period, and anybody
// caught using it without our permission, will be
// mighty good friends of ourn, cause we don't give
// a darn. Hack it. Compile it. Debug it. Run it.
// Yodel it. Enjoy it. We wrote it, that's all we
// wanted to do.''
//
//# PROJECT: Object Oriented Finite Element Program
//# PURPOSE: Finite Deformation Hyper-Elastic classes
//# CLASS:
//#
//# VERSION: 0.6_(1803398874989) (golden section)
//# LANGUAGE: C++
//# TARGET OS: all...
//# DESIGN: Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
//# PROGRAMMER(S): Zhao Cheng, Boris Jeremic
//#
//#
//# DATE: July 2004
//# UPDATE HISTORY:
//#
//===============================================================================
 
#ifndef NeoHookeanCompressible3D_h
#define NeoHookeanCompressible3D_h
 
#include <FiniteDeformationElastic3D.h>
 
class NeoHookeanCompressible3D : public FiniteDeformationElastic3D
{
public:
NeoHookeanCompressible3D(int tag, int classTag, double, double, double );
NeoHookeanCompressible3D(int tag, double, double, double );
NeoHookeanCompressible3D();
virtual ~NeoHookeanCompressible3D();
 
double getRho(void);
 
int setTrialF(const straintensor &f);
int setTrialFIncr(const straintensor &df);
int setTrialC(const straintensor &c);
int setTrialCIncr(const straintensor &dc);
 
const Tensor& getTangentTensor(void) ; // Default Lagrangian Tangent Tensor
const Tensor& getInitialTangentTensor(void) ;
 
const straintensor getStrainTensor(void) ; // Default Green Lagrangian Strain
const stresstensor getStressTensor(void) ; // Default 2nd Piola Kirchhoff Stress
const straintensor getF(void);
const straintensor getC(void);
 
int commitState(void) ;
int revertToLastCommit(void) ;
int revertToStart(void) ;
 
NDMaterial *getCopy (void);
NDMaterial *getCopy (const char *type);
 
const char *getType (void) const;
int getOrder (void) const;
 
int sendSelf(int commitTag, Channel &theChannel);
int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
 
void Print(OPS_Stream &s, int flag = 0);
 
// int setParameter(char **argv, int argc, Information &info);
// int updateParameter(int parameterID, Information &info);
 
const stresstensor getPK1StressTensor(void) ;
const stresstensor getCauchyStressTensor(void) ;
 
private:
 
int ComputeTrials(void);
private:
double rho;
double K;
double G;
 
straintensor F;
straintensor C;
double J;
straintensor Cinv;
 
int FromForC;
 
Tensor Stiffness;
straintensor thisGreenStrain;
stresstensor thisPK2Stress;
 
};
 
#endif
 
/trunk/SRC/material/nD/FiniteDeformation/NeoHookeanWEnergy.h
20,7 → 20,7
//#
//#
//# DATE: 19AUg2003
//# UPDATE HISTORY:
//# UPDATE HISTORY: 28May2004
//#
//#
/**********************************************************************/
31,27 → 31,23
#ifndef NeoHookeanWEnergy_H
#define NeoHookeanWEnergy_H
 
#include <BJvector.h>
#include <BJtensor.h>
 
#include <Vector.h>
#include <Tensor.h>
#include <OPS_Globals.h>
#include <W.h>
 
 
class NeoHookeanWEnergy : public WEnergy
{
private:
double E;
double nu;
double K;
double G;
public:
NeoHookeanWEnergy(double , double );
// NeoHookeanWEnergy( );
NeoHookeanWEnergy( );
~NeoHookeanWEnergy( );
WEnergy *newObj( );
 
const double getE();
const double getnu();
const double wE(const double &, const Vector &) ;
const Vector disowOdlambda(const Vector &l) ;
const Vector d2isowOdlambda2(const Vector &) ;
59,8 → 55,6
const double dvolwOdJ(const double &) ;
const double d2volwOdJ2(const double &) ;
 
// friend OPS_Stream& operator<< (OPS_Stream& os, const NeoKookeanWEnergy &W);
 
};
 
#endif
/trunk/SRC/material/nD/soil/PressureDependMultiYield02.h
1,242 → 1,249
 
// $Revision: 1.1 $
// $Date: 2004-06-15 18:49:32 $
// $Source: /usr/local/cvs/OpenSees/SRC/material/nD/soil/PressureDependMultiYield02.h,v $
 
// Written: ZHY
// Created: May 2004
 
 
// Description: This file contains the class prototype for PressureDependMultiYield02.
//
// What: "@(#) PressureDependMultiYield02.h, revA"
 
#ifndef PressureDependMultiYield02_h
#define PressureDependMultiYield02_h
 
#include <NDMaterial.h>
#include <MultiYieldSurface.h>
#include <Matrix.h>
#include <Tensor.h>
#include <stresst.h>
 
class PressureDependMultiYield02 : public NDMaterial
{
public:
// Initialization constructor
PressureDependMultiYield02 (int tag,
int nd,
double rho,
double refShearModul,
double refBulkModul,
double frictionAng,
double peakShearStra,
double refPress,
double pressDependCoe,
double phaseTransformAngle,
double contractionParam1,
double contractionParam2,
double dilationParam1,
double dilationParam2,
double liquefactionParam1,
double liquefactionParam2,
double liquefactionParam4,
int numberOfYieldSurf = 20,
double * gredu = 0,
double e = 0.6,
double volLimit1 = 0.9,
double volLimit2 = 0.02,
double volLimit3 = 0.7,
double atm = 101.,
double cohesi = 0.1,
double hv = 0.,
double pv = 1.);
// Default constructor
PressureDependMultiYield02 ();
// Copy constructor
PressureDependMultiYield02 (const PressureDependMultiYield02 &);
 
// Destructor: clean up memory storage space.
virtual ~PressureDependMultiYield02 ();
double getRho(void) {return rhox[matN];} ;
// Sets the values of the trial strain tensor.
int setTrialStrain (const Vector &strain);
// Sets the values of the trial strain and strain rate tensors.
int setTrialStrain(const Vector &v, const Vector &r);
int setTrialStrainIncr(const Vector &v);
int setTrialStrainIncr(const Vector &v, const Vector &r);
// Calculates current tangent stiffness.
const Matrix &getTangent (void);
const Matrix &getInitialTangent (void);
void getBackbone (Matrix &);
// Calculates the corresponding stress increment (rate), for a given strain increment.
const Vector &getStress (void);
const Vector &getStrain (void);
const Vector &getCommittedStress (void);
const Vector &getCommittedStrain (void);
 
int setTrialStrain (const Tensor &v) {return 0;}
int setTrialStrain (const Tensor &v, const Tensor &r) {return 0;}
int setTrialStrainIncr (const Tensor &v) {return 0;}
int setTrialStrainIncr (const Tensor &v, const Tensor &r) {return 0;}
 
// Accepts the current trial strain values as being on the solution path, and updates
// all model parameters related to stress/strain states. Return 0 on success.
int commitState (void);
 
// Revert the stress/strain states to the last committed states. Return 0 on success.
int revertToLastCommit (void);
 
int revertToStart(void) {return 0;}
 
// Return an exact copy of itself.
NDMaterial *getCopy (void);
 
// Return a copy of itself if "code"="PressureDependMultiYield02", otherwise return null.
NDMaterial *getCopy (const char *code);
 
// Return the string "PressureDependMultiYield02".
const char *getType (void) const ;
 
// Return ndm.
int getOrder (void) const ;
 
int sendSelf(int commitTag, Channel &theChannel);
int recvSelf(int commitTag, Channel &theChannel,
FEM_ObjectBroker &theBroker);
Response *setResponse (const char **argv, int argc, Information &matInfo);
int getResponse (int responseID, Information &matInformation);
void Print(OPS_Stream &s, int flag =0);
//void setCurrentStress(const Vector stress) { currentStress=T2Vector(stress); }
int updateParameter(int responseID, Information &eleInformation);
 
// RWB; PyLiq1 & TzLiq1 need to see the excess pore pressure and initial stresses.
friend class PyLiq1;
friend class TzLiq1;
 
protected:
 
private:
// user supplied
static int matCount;
static int* ndmx; //num of dimensions (2 or 3)
static int* loadStagex; //=0 if elastic; =1 or 2 if plastic
static double* rhox; //mass density
static double* refShearModulusx;
static double* refBulkModulusx;
static double* frictionAnglex;
static double* peakShearStrainx;
static double* refPressurex;
static double* cohesionx;
static double* pressDependCoeffx;
static int* numOfSurfacesx;
static double* phaseTransfAnglex;
static double* contractParam1x;
static double* contractParam2x;
static double* dilateParam1x;
static double* dilateParam2x;
static double* liquefyParam1x;
static double* liquefyParam2x;
static double* liquefyParam4x;
static double* einitx; //initial void ratio
static double* volLimit1x;
static double* volLimit2x;
static double* volLimit3x;
static double pAtm;
static double* Hvx;
static double* Pvx;
// internal
static double* residualPressx;
static double* stressRatioPTx;
static Matrix theTangent;
int matN;
int e2p;
MultiYieldSurface * theSurfaces; // NOTE: surfaces[0] is not used
MultiYieldSurface * committedSurfaces;
int activeSurfaceNum;
int committedActiveSurf;
double modulusFactor;
double initPress;
T2Vector currentStress;
T2Vector trialStress;
T2Vector currentStrain;
T2Vector strainRate;
static T2Vector subStrainRate;
double pressureD;
T2Vector reversalStress;
int onPPZ; //=-1 never reach PPZ before; =0 below PPZ; =1 on PPZ; =2 above PPZ
double strainPTOcta;
double PPZSize;
double cumuDilateStrainOcta;
double maxCumuDilateStrainOcta;
double cumuTranslateStrainOcta;
double prePPZStrainOcta;
double oppoPrePPZStrainOcta;
static T2Vector trialStrain;
T2Vector PPZPivot;
T2Vector PPZCenter;
T2Vector lockStress;
double pressureDCommitted;
T2Vector reversalStressCommitted;
int onPPZCommitted;
double PPZSizeCommitted;
double cumuDilateStrainOctaCommitted;
double maxCumuDilateStrainOctaCommitted;
double cumuTranslateStrainOctaCommitted;
double prePPZStrainOctaCommitted;
double oppoPrePPZStrainOctaCommitted;
T2Vector PPZPivotCommitted;
T2Vector PPZCenterCommitted;
T2Vector lockStressCommitted;
static Vector workV6;
static T2Vector workT2V;
double maxPress;
void elast2Plast(void);
// Called by constructor
void setUpSurfaces(double *);
double yieldFunc(const T2Vector & stress, const MultiYieldSurface * surfaces,
int surface_num);
void deviatorScaling(T2Vector & stress, const MultiYieldSurface * surfaces,
int surfaceNum);
void initSurfaceUpdate(void);
void initStrainUpdate(void);
// Return num_strain_subincre
int setSubStrainRate(void);
int isLoadReversal(const T2Vector &);
int isCriticalState(const T2Vector & stress);
void getContactStress(T2Vector &contactStress);
void getSurfaceNormal(const T2Vector & stress, T2Vector &normal);
double getModulusFactor(T2Vector & stress);
void updatePPZ(const T2Vector & stress);
void PPZTranslation(const T2Vector & contactStress);
double getPPZLimits(int which, const T2Vector & contactStress);
double getPlasticPotential(const T2Vector & stress, const T2Vector & surfaceNormal);
void setTrialStress(T2Vector & stress);
double getLoadingFunc(const T2Vector & contact, const T2Vector & surfaceNormal,
double plasticPotential,int crossedSurface);
//return 1 if stress locked; o/w return 0.
int stressCorrection(int crossedSurface);
void updateActiveSurface(void);
void updateInnerSurface(void);
// Return 1 if crossing the active surface; return 0 o/w
int isCrossingNextSurface(void);
};
 
#endif
//<<<<<<< PressureDependMultiYield.h
// $Revision: 1.3 $
// $Date: 2004-08-26 20:39:13 $
//=======
// $Revision: 1.3 $
// $Date: 2004-08-26 20:39:13 $
//>>>>>>> 1.7
// $Source: /usr/local/cvs/OpenSees/SRC/material/nD/soil/PressureDependMultiYield02.h,v $
 
// Written: ZHY
// Created: May 2004
 
 
// Description: This file contains the class prototype for PressureDependMultiYield02.
//
// What: "@(#) PressureDependMultiYield02.h, revA"
 
#ifndef PressureDependMultiYield02_h
#define PressureDependMultiYield02_h
 
#include <NDMaterial.h>
#include <MultiYieldSurface.h>
#include <Matrix.h>
#include <Tensor.h>
#include <stresst.h>
 
class PressureDependMultiYield02 : public NDMaterial
{
public:
// Initialization constructor
PressureDependMultiYield02 (int tag,
int nd,
double rho,
double refShearModul,
double refBulkModul,
double frictionAng,
double peakShearStra,
double refPress,
double pressDependCoe,
double phaseTransformAngle,
double contractionParam1,
double contractionParam3,
double dilationParam1,
double liquefactionParam1,
double liquefactionParam2,
int numberOfYieldSurf = 20,
double * gredu = 0,
double contractionParam2 = 25,
double dilationParam2 = 1.5,
double dilationParam3 = 0.5,
double e = 0.6,
double volLimit1 = 0.9,
double volLimit2 = 0.02,
double volLimit3 = 0.7,
double atm = 101.,
double cohesi = 0.1,
double hv = 0.,
double pv = 1.);
 
// Default constructor
PressureDependMultiYield02 ();
 
// Copy constructor
PressureDependMultiYield02 (const PressureDependMultiYield02 &);
 
// Destructor: clean up memory storage space.
virtual ~PressureDependMultiYield02 ();
 
double getRho(void) {return rhox[matN];} ;
 
// Sets the values of the trial strain tensor.
int setTrialStrain (const Vector &strain);
 
// Sets the values of the trial strain and strain rate tensors.
int setTrialStrain(const Vector &v, const Vector &r);
 
int setTrialStrainIncr(const Vector &v);
int setTrialStrainIncr(const Vector &v, const Vector &r);
 
// Calculates current tangent stiffness.
const Matrix &getTangent (void);
const Matrix &getInitialTangent (void);
 
void getBackbone (Matrix &);
 
// Calculates the corresponding stress increment (rate), for a given strain increment.
const Vector &getStress (void);
const Vector &getStrain (void);
const Vector &getCommittedStress (void);
const Vector &getCommittedStrain (void);
 
int setTrialStrain (const Tensor &v) {return 0;}
int setTrialStrain (const Tensor &v, const Tensor &r) {return 0;}
int setTrialStrainIncr (const Tensor &v) {return 0;}
int setTrialStrainIncr (const Tensor &v, const Tensor &r) {return 0;}
 
// Accepts the current trial strain values as being on the solution path, and updates
// all model parameters related to stress/strain states. Return 0 on success.
int commitState (void);
 
// Revert the stress/strain states to the last committed states. Return 0 on success.
int revertToLastCommit (void);
 
int revertToStart(void) {return 0;}
 
// Return an exact copy of itself.
NDMaterial *getCopy (void);
 
// Return a copy of itself if "code"="PressureDependMultiYield02", otherwise return null.
NDMaterial *getCopy (const char *code);
 
// Return the string "PressureDependMultiYield02".
const char *getType (void) const ;
 
// Return ndm.
int getOrder (void) const ;
 
int sendSelf(int commitTag, Channel &theChannel);
int recvSelf(int commitTag, Channel &theChannel,
FEM_ObjectBroker &theBroker);
Response *setResponse (const char **argv, int argc, Information &matInfo);
int getResponse (int responseID, Information &matInformation);
void Print(OPS_Stream &s, int flag =0);
//void setCurrentStress(const Vector stress) { currentStress=T2Vector(stress); }
int updateParameter(int responseID, Information &eleInformation);
 
// RWB; PyLiq1 & TzLiq1 need to see the excess pore pressure and initial stresses.
friend class PyLiq1;
friend class TzLiq1;
 
protected:
 
private:
// user supplied
static int matCount;
static int* ndmx; //num of dimensions (2 or 3)
static int* loadStagex; //=0 if elastic; =1 or 2 if plastic
static double* rhox; //mass density
static double* refShearModulusx;
static double* refBulkModulusx;
static double* frictionAnglex;
static double* peakShearStrainx;
static double* refPressurex;
static double* cohesionx;
static double* pressDependCoeffx;
static int* numOfSurfacesx;
static double* phaseTransfAnglex;
static double* contractParam1x;
static double* contractParam2x;
static double* contractParam3x;
static double* dilateParam1x;
static double* dilateParam2x;
static double* liquefyParam1x;
static double* liquefyParam2x;
static double* dilateParam3x;
static double* einitx; //initial void ratio
static double* volLimit1x;
static double* volLimit2x;
static double* volLimit3x;
static double pAtm;
static double* Hvx;
static double* Pvx;
 
// internal
static double* residualPressx;
static double* stressRatioPTx;
static Matrix theTangent;
 
int matN;
int e2p;
MultiYieldSurface * theSurfaces; // NOTE: surfaces[0] is not used
MultiYieldSurface * committedSurfaces;
int activeSurfaceNum;
int committedActiveSurf;
double modulusFactor;
double initPress;
double damage;
double check;
T2Vector currentStress;
T2Vector trialStress;
T2Vector updatedTrialStress;
T2Vector currentStrain;
T2Vector strainRate;
static T2Vector subStrainRate;
 
double pressureD;
int onPPZ; //=-1 never reach PPZ before; =0 below PPZ; =1 on PPZ; =2 above PPZ
double strainPTOcta;
double PPZSize;
double cumuDilateStrainOcta;
double maxCumuDilateStrainOcta;
double cumuTranslateStrainOcta;
double prePPZStrainOcta;
double oppoPrePPZStrainOcta;
static T2Vector trialStrain;
T2Vector PPZPivot;
T2Vector PPZCenter;
Vector PivotStrainRate;
 
double pressureDCommitted;
int onPPZCommitted;
double PPZSizeCommitted;
double cumuDilateStrainOctaCommitted;
double maxCumuDilateStrainOctaCommitted;
double cumuTranslateStrainOctaCommitted;
double prePPZStrainOctaCommitted;
double oppoPrePPZStrainOctaCommitted;
T2Vector PPZPivotCommitted;
T2Vector PPZCenterCommitted;
Vector PivotStrainRateCommitted;
static Vector workV6;
static T2Vector workT2V;
double maxPress;
 
void elast2Plast(void);
// Called by constructor
void setUpSurfaces(double *);
double yieldFunc(const T2Vector & stress, const MultiYieldSurface * surfaces,
int surface_num);
void deviatorScaling(T2Vector & stress, const MultiYieldSurface * surfaces,
int surfaceNum);
void initSurfaceUpdate(void);
void initStrainUpdate(void);
 
// Return num_strain_subincre
int setSubStrainRate(void);
int isLoadReversal(const T2Vector &);
int isCriticalState(const T2Vector & stress);
void getContactStress(T2Vector &contactStress);
void getSurfaceNormal(const T2Vector & stress, T2Vector &normal);
double getModulusFactor(T2Vector & stress);
void updatePPZ(const T2Vector & stress);
void PPZTranslation(const T2Vector & contactStress);
double getPPZLimits(int which, const T2Vector & contactStress);
double getPlasticPotential(const T2Vector & stress, const T2Vector & surfaceNormal);
void setTrialStress(T2Vector & stress);
double getLoadingFunc(const T2Vector & contact, const T2Vector & surfaceNormal,
double * plasticPotential,int crossedSurface);
//return 1 if stress locked; o/w return 0.
int stressCorrection(int crossedSurface);
void updateActiveSurface(void);
void updateInnerSurface(void);
 
// Return 1 if crossing the active surface; return 0 o/w
int isCrossingNextSurface(void);
};
 
#endif
/trunk/SRC/material/nD/soil/PressureIndependMultiYield.cpp
1,1315 → 1,1315
// $Revision: 1.28 $
// $Date: 2004-06-15 18:58:01 $
// $Source: /usr/local/cvs/OpenSees/SRC/material/nD/soil/PressureIndependMultiYield.cpp,v $
// Written: ZHY
// Created: August 2000
 
//
// PressureIndependMultiYield.cpp
// -------------------
//
#include <math.h>
#include <stdlib.h>
#include <PressureIndependMultiYield.h>
#include <Information.h>
#include <ID.h>
#include <MaterialResponse.h>
 
Matrix PressureIndependMultiYield::theTangent(6,6);
T2Vector PressureIndependMultiYield::subStrainRate;
int PressureIndependMultiYield::matCount=0;
int* PressureIndependMultiYield::loadStagex=0; //=0 if elastic; =1 if plastic
int* PressureIndependMultiYield::ndmx=0; //num of dimensions (2 or 3)
double* PressureIndependMultiYield::rhox=0;
double* PressureIndependMultiYield::frictionAnglex=0;
double* PressureIndependMultiYield::peakShearStrainx=0;
double* PressureIndependMultiYield::refPressurex=0;
double* PressureIndependMultiYield::cohesionx=0;
double* PressureIndependMultiYield::pressDependCoeffx=0;
int* PressureIndependMultiYield::numOfSurfacesx=0;
double* PressureIndependMultiYield::residualPressx=0;
 
PressureIndependMultiYield::PressureIndependMultiYield (int tag, int nd,
double r, double refShearModul,
double refBulkModul,
double cohesi, double peakShearStra,
double frictionAng, double refPress, double pressDependCoe,
int numberOfYieldSurf, double * gredu)
: NDMaterial(tag,ND_TAG_PressureIndependMultiYield), currentStress(),
trialStress(), currentStrain(), strainRate()
{
if (nd !=2 && nd !=3) {
opserr << "FATAL:PressureIndependMultiYield:: dimension error" << endln;
opserr << "Dimension has to be 2 or 3, you give nd= " << nd << endln;
exit(-1);
}
if (refShearModul <= 0) {
opserr << "FATAL:PressureIndependMultiYield::PressureIndependMultiYield: refShearModulus <= 0" << endln;
exit(-1);
}
if (refBulkModul <= 0) {
opserr << "FATAL:PressureIndependMultiYield::PressureIndependMultiYield: refBulkModulus <= 0" << endln;
exit(-1);
}
if (frictionAng < 0.) {
opserr << "WARNING:PressureIndependMultiYield::PressureIndependMultiYield: frictionAngle < 0" << endln;
opserr << "Will reset frictionAngle to zero." << endln;
frictionAng = 0.;
}
if (frictionAng == 0. && cohesi <= 0. ) {
opserr << "FATAL:PressureIndependMultiYield::PressureIndependMultiYield: frictionAngle && cohesion <= 0." << endln;
exit(-1);
}
if (cohesi <= 0) {
opserr << "WARNING:PressureIndependMultiYield::PressureIndependMultiYield: cohesion <= 0" << endln;
opserr << "Will reset cohesion to zero." << endln;
cohesi = 0.;
}
if (peakShearStra <= 0) {
opserr << "FATAL:PressureIndependMultiYield::PressureIndependMultiYield: peakShearStra <= 0" << endln;
exit(-1);
}
if (refPress <= 0) {
opserr << "FATAL:PressureIndependMultiYield::PressureIndependMultiYield: refPress <= 0" << endln;
exit(-1);
}
if (pressDependCoe < 0) {
opserr << "WARNING:PressureIndependMultiYield::PressureIndependMultiYield: pressDependCoe < 0" << endln;
opserr << "Will reset pressDependCoe to zero." << endln;
pressDependCoe = 0.;
}
if (pressDependCoe > 0 && frictionAng == 0) {
opserr << "WARNING:PressureIndependMultiYield::PressureIndependMultiYield: pressDependCoe > 0 while frictionAngle = 0" << endln;
opserr << "Will reset pressDependCoe to zero." << endln;
pressDependCoe = 0.;
}
if (numberOfYieldSurf <= 0) {
opserr << "WARNING:PressureIndependMultiYield::PressureIndependMultiYield: numberOfSurfaces <= 0" << endln;
opserr << "Will use 10 yield surfaces." << endln;
numberOfYieldSurf = 10;
}
if (numberOfYieldSurf > 100) {
opserr << "WARNING:PressureIndependMultiYield::PressureIndependMultiYield: numberOfSurfaces > 100" << endln;
opserr << "Will use 100 yield surfaces." << endln;
numberOfYieldSurf = 100;
}
if (r < 0) {
opserr << "WARNING:PressureIndependMultiYield::PressureIndependMultiYield: mass density < 0" << endln;
opserr << "Will use rho = 0." << endln;
r = 0.;
}
 
if (matCount%20 == 0) {
int * temp1 = loadStagex;
int * temp2 = ndmx;
double * temp3 = rhox;
double * temp6 = frictionAnglex;
double * temp7 = peakShearStrainx;
double * temp8 = refPressurex;
double * temp9 = cohesionx;
double * temp10 = pressDependCoeffx;
int * temp11 = numOfSurfacesx;
double * temp12 = residualPressx;
loadStagex = new int[matCount+20];
ndmx = new int[matCount+20];
rhox = new double[matCount+20];
frictionAnglex = new double[matCount+20];
peakShearStrainx = new double[matCount+20];
refPressurex = new double[matCount+20];
cohesionx = new double[matCount+20];
pressDependCoeffx = new double[matCount+20];
numOfSurfacesx = new int[matCount+20];
residualPressx = new double[matCount+20];
 
for (int i=0; i<matCount; i++) {
loadStagex[i] = temp1[i];
ndmx[i] = temp2[i];
rhox[i] = temp3[i];
frictionAnglex[i] = temp6[i];
peakShearStrainx[i] = temp7[i];
refPressurex[i] = temp8[i];
cohesionx[i] = temp9[i];
pressDependCoeffx[i] = temp10[i];
numOfSurfacesx[i] = temp11[i];
residualPressx[i] = temp12[i];
}
 
if (matCount > 0) {
delete [] temp1; delete [] temp2; delete [] temp3;
delete [] temp6; delete [] temp7; delete [] temp8;
delete [] temp9; delete [] temp10; delete [] temp11;
delete [] temp12;
}
}
 
ndmx[matCount] = nd;
loadStagex[matCount] = 0; //default
refShearModulus = refShearModul;
refBulkModulus = refBulkModul;
frictionAnglex[matCount] = frictionAng;
peakShearStrainx[matCount] = peakShearStra;
refPressurex[matCount] = -refPress; //compression is negative
cohesionx[matCount] = cohesi;
pressDependCoeffx[matCount] = pressDependCoe;
numOfSurfacesx[matCount] = numberOfYieldSurf;
rhox[matCount] = r;
 
e2p = 0;
matN = matCount;
matCount ++;
 
theSurfaces = new MultiYieldSurface[numberOfYieldSurf+1]; //first surface not used
committedSurfaces = new MultiYieldSurface[numberOfYieldSurf+1];
activeSurfaceNum = committedActiveSurf = 0;
 
setUpSurfaces(gredu); // residualPress is calculated inside.
}
 
PressureIndependMultiYield::PressureIndependMultiYield ()
: NDMaterial(0,ND_TAG_PressureIndependMultiYield),
currentStress(), trialStress(), currentStrain(),
strainRate(), theSurfaces(0), committedSurfaces(0)
{
//does nothing
}
 
 
PressureIndependMultiYield::PressureIndependMultiYield (const PressureIndependMultiYield & a)
: NDMaterial(a.getTag(),ND_TAG_PressureIndependMultiYield),
currentStress(a.currentStress), trialStress(a.trialStress),
currentStrain(a.currentStrain), strainRate(a.strainRate)
{
matN = a.matN;
e2p = a.e2p;
refShearModulus = a.refShearModulus;
refBulkModulus = a.refBulkModulus;
 
int numOfSurfaces = numOfSurfacesx[matN];
 
committedActiveSurf = a.committedActiveSurf;
activeSurfaceNum = a.activeSurfaceNum;
 
theSurfaces = new MultiYieldSurface[numOfSurfaces+1]; //first surface not used
committedSurfaces = new MultiYieldSurface[numOfSurfaces+1];
for(int i=1; i<=numOfSurfaces; i++) {
committedSurfaces[i] = a.committedSurfaces[i];
theSurfaces[i] = a.theSurfaces[i];
}
}
 
 
PressureIndependMultiYield::~PressureIndependMultiYield ()
{
if (theSurfaces != 0) delete [] theSurfaces;
if (committedSurfaces != 0) delete [] committedSurfaces;
}
 
 
void PressureIndependMultiYield::elast2Plast(void)
{
int loadStage = loadStagex[matN];
double frictionAngle = frictionAnglex[matN];
int numOfSurfaces = numOfSurfacesx[matN];
 
if (loadStage != 1 || e2p == 1) return;
e2p = 1;
 
if (currentStress.volume() > 0. && frictionAngle > 0.) {
//opserr << "WARNING:PressureIndependMultiYield::elast2Plast(): material in tension." << endln;
currentStress.setData(currentStress.deviator(),0);
}
 
paramScaling(); // scale surface parameters corresponding to initial confinement
 
// Active surface is 0, return
if (currentStress.deviatorLength() == 0.) return;
 
// Find active surface
while (yieldFunc(currentStress, committedSurfaces, ++committedActiveSurf) > 0) {
if (committedActiveSurf == numOfSurfaces) {
//opserr <<"WARNING:PressureIndependMultiYield::elast2Plast(): stress out of failure surface"<<endln;
deviatorScaling(currentStress, committedSurfaces, numOfSurfaces);
initSurfaceUpdate();
return;
}
}
committedActiveSurf--;
initSurfaceUpdate();
}
 
 
int PressureIndependMultiYield::setTrialStrain (const Vector &strain)
{
int ndm = ndmx[matN];
 
static Vector temp(6);
if (ndm==3 && strain.Size()==6)
temp = strain;
else if (ndm==2 && strain.Size()==3) {
temp[0] = strain[0];
temp[1] = strain[1];
temp[2] = 0.0;
temp[3] = strain[2];
temp[4] = 0.0;
temp[5] = 0.0;
}
else {
opserr << "Fatal:D2PressDepMYS:: Material dimension is: " << ndm << endln;
opserr << "But strain vector size is: " << strain.Size() << endln;
exit(-1);
}
//strainRate.setData(temp-currentStrain.t2Vector(1),1);
temp -= currentStrain.t2Vector(1);
strainRate.setData(temp, 1);
return 0;
}
 
 
int PressureIndependMultiYield::setTrialStrain (const Vector &strain, const Vector &rate)
{
return setTrialStrain (strain);
}
 
 
int PressureIndependMultiYield::setTrialStrainIncr (const Vector &strain)
{
int ndm = ndmx[matN];
 
static Vector temp(6);
if (ndm==3 && strain.Size()==6)
temp = strain;
else if (ndm==2 && strain.Size()==3) {
temp[0] = strain[0];
temp[1] = strain[1];
temp[3] = strain[2];
}
else {
opserr << "Fatal:D2PressDepMYS:: Material dimension is: " << ndm << endln;
opserr << "But strain vector size is: " << strain.Size() << endln;
exit(-1);
}
strainRate.setData(temp,1);
return 0;
}
 
 
int PressureIndependMultiYield::setTrialStrainIncr (const Vector &strain, const Vector &rate)
{
return setTrialStrainIncr(strain);
}
 
 
const Matrix & PressureIndependMultiYield::getTangent (void)
{
int loadStage = loadStagex[matN];
int ndm = ndmx[matN];
 
if (loadStage == 1 && e2p == 0) elast2Plast();
 
if (loadStage!=1) { //linear elastic
for (int i=0;i<6;i++)
for (int j=0;j<6;j++) {
theTangent(i,j) = 0.;
if (i==j) theTangent(i,j) += refShearModulus;
if (i<3 && j<3 && i==j) theTangent(i,j) += refShearModulus;
if (i<3 && j<3) theTangent(i,j) += (refBulkModulus - 2.*refShearModulus/3.);
}
 
}
else {
double coeff;
static Vector devia(6);
/*if (committedActiveSurf > 0) {
//devia = currentStress.deviator()-committedSurfaces[committedActiveSurf].center();
devia = currentStress.deviator();
devia -= committedSurfaces[committedActiveSurf].center();
double size = committedSurfaces[committedActiveSurf].size();
double plastModul = committedSurfaces[committedActiveSurf].modulus();
coeff = 6.*refShearModulus*refShearModulus/(2.*refShearModulus+plastModul)/size/size;
}*/
if (activeSurfaceNum > 0) {
//devia = currentStress.deviator()-committedSurfaces[committedActiveSurf].center();
devia = trialStress.deviator();
devia -= theSurfaces[activeSurfaceNum].center();
double size = theSurfaces[activeSurfaceNum].size();
double plastModul = theSurfaces[activeSurfaceNum].modulus();
coeff = 6.*refShearModulus*refShearModulus/(2.*refShearModulus+plastModul)/size/size;
}
 
else coeff = 0.;
for (int i=0;i<6;i++)
for (int j=0;j<6;j++) {
theTangent(i,j) = - coeff*devia[i]*devia[j];
if (i==j) theTangent(i,j) += refShearModulus;
if (i<3 && j<3 && i==j) theTangent(i,j) += refShearModulus;
if (i<3 && j<3) theTangent(i,j) += (refBulkModulus - 2.*refShearModulus/3.);
}
}
 
if (ndm==3)
return theTangent;
else {
static Matrix workM(3,3);
workM(0,0) = theTangent(0,0);
workM(0,1) = theTangent(0,1);
workM(0,2) = theTangent(0,3);
workM(1,0) = theTangent(1,0);
workM(1,1) = theTangent(1,1);
workM(1,2) = theTangent(1,3);
workM(2,0) = theTangent(3,0);
workM(2,1) = theTangent(3,1);
workM(2,2) = theTangent(3,3);
return workM;
}
}
 
 
const Matrix & PressureIndependMultiYield::getInitialTangent (void)
{
int ndm = ndmx[matN];
 
for (int i=0;i<6;i++)
for (int j=0;j<6;j++) {
theTangent(i,j) = 0.;
if (i==j) theTangent(i,j) += refShearModulus;
if (i<3 && j<3 && i==j) theTangent(i,j) += refShearModulus;
if (i<3 && j<3) theTangent(i,j) += (refBulkModulus - 2.*refShearModulus/3.);
}
 
if (ndm==3)
return theTangent;
else {
static Matrix workM(3,3);
workM(0,0) = theTangent(0,0);
workM(0,1) = theTangent(0,1);
workM(0,2) = theTangent(0,3);
workM(1,0) = theTangent(1,0);
workM(1,1) = theTangent(1,1);
workM(1,2) = theTangent(1,3);
workM(2,0) = theTangent(3,0);
workM(2,1) = theTangent(3,1);
workM(2,2) = theTangent(3,3);
return workM;
}
}
 
 
const Vector & PressureIndependMultiYield::getStress (void)
{
int loadStage = loadStagex[matN];
int numOfSurfaces = numOfSurfacesx[matN];
int ndm = ndmx[matN];
 
int i;
if (loadStage == 1 && e2p == 0) elast2Plast();
 
if (loadStage!=1) { //linear elastic
//trialStrain.setData(currentStrain.t2Vector() + strainRate.t2Vector());
getTangent();
static Vector a(6);
a = currentStress.t2Vector();
a.addMatrixVector(1.0, theTangent, strainRate.t2Vector(1), 1.0);
trialStress.setData(a);
}
 
else {
for (i=1; i<=numOfSurfaces; i++) theSurfaces[i] = committedSurfaces[i];
activeSurfaceNum = committedActiveSurf;
subStrainRate = strainRate;
setTrialStress(currentStress);
if (isLoadReversal()) {
updateInnerSurface();
activeSurfaceNum = 0;
}
int numSubIncre = setSubStrainRate();
for (i=0; i<numSubIncre; i++) {
if (i==0)
setTrialStress(currentStress);
else
setTrialStress(trialStress);
if (activeSurfaceNum==0 && !isCrossingNextSurface()) continue;
if (activeSurfaceNum==0) activeSurfaceNum++;
stressCorrection(0);
updateActiveSurface();
}
//volume stress change
double volum = refBulkModulus*(strainRate.volume()*3.);
volum += currentStress.volume();
//if (volum > 0) volum = 0.;
trialStress.setData(trialStress.deviator(),volum);
}
 
if (ndm==3)
return trialStress.t2Vector();
else {
static Vector workV(3);
workV[0] = trialStress.t2Vector()[0];
workV[1] = trialStress.t2Vector()[1];
workV[2] = trialStress.t2Vector()[3];
return workV;
}
}
 
 
const Vector & PressureIndependMultiYield::getStrain (void)
{
return getCommittedStrain();
}
 
 
int PressureIndependMultiYield::commitState (void)
{
int loadStage = loadStagex[matN];
int numOfSurfaces = numOfSurfacesx[matN];
 
currentStress = trialStress;
//currentStrain = T2Vector(currentStrain.t2Vector() + strainRate.t2Vector());
static Vector temp(6);
temp = currentStrain.t2Vector();
temp += strainRate.t2Vector();
currentStrain.setData(temp);