[cig-commits] r15204 - short/3D/PyLith/trunk/unittests/libtests/materials/data
willic3 at geodynamics.org
willic3 at geodynamics.org
Thu Jun 11 20:02:11 PDT 2009
Author: willic3
Date: 2009-06-11 20:02:10 -0700 (Thu, 11 Jun 2009)
New Revision: 15204
Modified:
short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElastic.py
short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc
short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh
short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDep.py
short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc
short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh
short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh
Log:
Finished creating data for PowerLaw3D unit tests.
Everything passes now except for test_calcElasticConstsTimeDep.
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElastic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElastic.py 2009-06-12 01:11:27 UTC (rev 15203)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElastic.py 2009-06-12 03:02:10 UTC (rev 15204)
@@ -77,7 +77,7 @@
densityB = 2000.0
vsB = 1200.0
vpB = vsB*3**0.5
- viscosityCoeffB = 1.2e16
+ viscosityCoeffB = 1.0e10
powerLawExponentB = 3.0
strainB = [4.1e-4, 4.2e-4, 4.3e-4, 4.4e-4, 4.5e-4, 4.6e-4]
initialStressB = [5.1e4, 5.2e4, 5.3e4, 5.4e4, 5.5e4, 5.6e4]
@@ -150,10 +150,22 @@
(self.elasticConsts[1,:], self.stress[1,:]) = \
self._calcStress(strainB, muB, lambdaB, \
initialStressB, initialStrainB)
+
maxwellTimeA = self._getMaxwellTime(muA, viscosityCoeffA, \
powerLawExponentA, self.stress[0,:])
maxwellTimeB = self._getMaxwellTime(muB, viscosityCoeffB, \
powerLawExponentB, self.stress[1,:])
+
+ viscousStrainUpdated = numpy.zeros((numLocs, tensorSize),
+ dtype=numpy.float64)
+ stressUpdated = self.stress
+
+ self.stateVarsUpdated = numpy.array( [viscousStrainUpdated[0,:],
+ stressUpdated[0,:],
+ viscousStrainUpdated[1,:],
+ stressUpdated[1,:]],
+ dtype=numpy.float64)
+
self.dtStableImplicit = 0.1*min(maxwellTimeA, maxwellTimeB)
return
@@ -177,7 +189,8 @@
power-law exponent.
"""
meanStress = (stress[0] + stress[1] + stress[2])/3.0
- devStress = stress
+ devStress = numpy.array(stress, dtype=numpy.float64)
+
devStress[0] = stress[0] - meanStress
devStress[1] = stress[1] - meanStress
devStress[2] = stress[2] - meanStress
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc 2009-06-12 01:11:27 UTC (rev 15203)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc 2009-06-12 03:02:10 UTC (rev 15204)
@@ -86,7 +86,7 @@
2.00000000e+03,
1.20000000e+03,
2.07846097e+03,
- 1.20000000e+16,
+ 1.00000000e+10,
3.00000000e+00,
};
@@ -126,7 +126,7 @@
2.00000000e+03,
2.88000000e+09,
2.88000000e+09,
- 1.20000000e+16,
+ 1.00000000e+10,
3.00000000e+00,
};
@@ -166,7 +166,7 @@
2.00000000e+00,
1.28000000e-01,
1.28000000e-01,
- 4.25063428e+12,
+ 3.54219523e+06,
3.00000000e+00,
};
@@ -218,15 +218,15 @@
};
const double pylith::materials::PowerLaw3DElasticData::_stress[] = {
- -1.00000000e+03,
- 0.00000000e+00,
- 1.00000000e+03,
+ -2.24790000e+07,
+ -2.24780000e+07,
+ -2.24770000e+07,
-8.97600000e+06,
-8.97500000e+06,
-8.97400000e+06,
- -1.00000000e+03,
- 0.00000000e+00,
- 1.00000000e+03,
+ -2.82900000e+06,
+ -2.82800000e+06,
+ -2.82700000e+06,
-1.09800000e+06,
-1.09700000e+06,
-1.09600000e+06,
@@ -307,7 +307,32 @@
6.60000000e-04,
};
-const double* pylith::materials::PowerLaw3DElasticData::_stateVarsUpdated = 0;
+const double pylith::materials::PowerLaw3DElasticData::_stateVarsUpdated[] = {
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ -2.24790000e+07,
+ -2.24780000e+07,
+ -2.24770000e+07,
+ -8.97600000e+06,
+ -8.97500000e+06,
+ -8.97400000e+06,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ -2.82900000e+06,
+ -2.82800000e+06,
+ -2.82700000e+06,
+ -1.09800000e+06,
+ -1.09700000e+06,
+ -1.09600000e+06,
+};
pylith::materials::PowerLaw3DElasticData::PowerLaw3DElasticData(void)
{ // constructor
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh 2009-06-12 01:11:27 UTC (rev 15203)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh 2009-06-12 03:02:10 UTC (rev 15204)
@@ -95,7 +95,7 @@
static const double _initialStrain[];
- static const double* _stateVarsUpdated;
+ static const double _stateVarsUpdated[];
};
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDep.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDep.py 2009-06-12 01:11:27 UTC (rev 15203)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDep.py 2009-06-12 03:02:10 UTC (rev 15204)
@@ -86,7 +86,7 @@
densityB = 2000.0
vsB = 1200.0
vpB = vsB*3**0.5
- viscosityCoeffB = 1.2e16
+ viscosityCoeffB = 1.0e10
powerLawExpB = 3.0
strainB = [4.1e-4, 4.2e-4, 4.3e-4, 4.4e-4, 4.5e-4, 4.6e-4]
initialStressB = [5.1e4, 5.2e4, 5.3e4, 5.4e4, 5.5e4, 5.6e4]
@@ -167,31 +167,38 @@
self.strain = numpy.array([strainA, strainB],
dtype=numpy.float64)
self.stress = numpy.zeros( (numLocs, tensorSize), dtype=numpy.float64)
+ self.stateVarsUpdated = numpy.zeros( (numLocs, tensorSize + tensorSize),
+ dtype=numpy.float64)
self.elasticConsts = numpy.zeros( (self.numLocs, numElasticConsts),
dtype=numpy.float64)
- (self.elasticConsts[0,:], self.stress[0,:]) = \
+ (self.elasticConsts[0,:], self.stress[0,:], self.stateVarsUpdated[0,:]) = \
self._calcStress(strainA,
muA, lambdaA, viscosityCoeffA,
powerLawExpA,
visStrainA, stressA,
initialStressA, initialStrainA)
- (self.elasticConsts[1,:], self.stress[1,:]) = \
+ (self.elasticConsts[1,:], self.stress[1,:], self.stateVarsUpdated[1,:]) = \
self._calcStress(strainB,
muB, lambdaB, viscosityCoeffB,
powerLawExpB,
visStrainB, stressB,
initialStressB, initialStrainB)
+ # I need to make sure that the correct stresses are being used to compute
+ # Maxwell times (and stable time step size).
+ # I am assuming right now that we use the state variable values rather than
+ # the current computed stress values.
maxwellTimeA = self._getMaxwellTime(muA, viscosityCoeffA, \
- powerLawExpA, self.stress[0,:])
+ powerLawExpA, stressA)
+
maxwellTimeB = self._getMaxwellTime(muB, viscosityCoeffB, \
- powerLawExpB, self.stress[1,:])
+ powerLawExpB, stressB)
+
self.dtStableImplicit = 0.1*min(maxwellTimeA, maxwellTimeB)
return
- # def _bracket(self, effStressInitialGuess, *effStressParams):
def _bracket(self, effStressInitialGuess, ae, b, c, d, alpha, dt, effStressT,
powerLawExpV, viscosityCoeffV):
"""
@@ -210,10 +217,6 @@
x1 = 500.0
x2 = 1500.0
- # funcValue1 = self._effStressFunc(x1, effStressParams)
- # funcValue2 = self._effStressFunc(x2, effStressParams)
- # funcValue1 = apply(self._effStressFunc, (x1,) + effStressParams)
- # funcValue2 = apply(self._effStressFunc, (x2,) + effStressParams)
funcValue1 = self._effStressFunc(x1, ae, b, c, d, alpha, dt,
effStressT, powerLawExpV, viscosityCoeffV)
funcValue2 = self._effStressFunc(x2, ae, b, c, d, alpha, dt,
@@ -229,14 +232,14 @@
if abs(funcValue1) < abs(funcValue2):
x1 += bracketFactor * (x1 - x2)
x1 = max(x1, 0.0)
- # funcValue1 = apply(self._effStressFunc, (x1,) + effStressParams)
+
funcValue1 = self._effStressFunc(x1, ae, b, c, d, alpha, dt,
effStressT, powerLawExpV,
viscosityCoeffV)
else:
x2 += bracketFactor * (x1 - x2)
x2 = max(x2, 0.0)
- # funcValue2 = apply(self._effStressFunc, (x2,) + effStressParams)
+
funcValue2 = self._effStressFunc(x2, ae, b, c, d, alpha, dt,
effStressT, powerLawExpV,
viscosityCoeffV)
@@ -254,7 +257,8 @@
power-law exponent.
"""
meanStress = (stress[0] + stress[1] + stress[2])/3.0
- devStress = stress
+ devStress = numpy.array(stress, dtype=numpy.float64)
+
devStress[0] = stress[0] - meanStress
devStress[1] = stress[1] - meanStress
devStress[2] = stress[2] - meanStress
@@ -289,57 +293,25 @@
muV, lambdaV, viscosityCoeffV,
powerLawExpV, visStrainT, stressT,
initialStress, initialStrain):
- # def _calcStressComponent(self, strainVal, *calcStressCompParams):
"""
Function to compute a particular stress component as a function of a
strain component.
"""
- # strainComp = calcStressCompParams[0]
- # stressComp = calcStressCompParams[1]
- # strainTpdt = calcStressCompParams[2]
- # mu = calcStressCompParams[3]
- # lambdaV = calcStressCompParams[4]
- # viscosityCoeffV = calcStressCompParams[5]
- # powerLawExpV = calcStressCompParams[6]
- # visStrainT = calcStressCompParams[7]
- # stressT = calcStressCompParams[8]
- # initialStress = calcStressCompParams[9]
- # initialStrain = calcStressCompParams[10]
strainTpdt[strainComp] = strainVal
- stressTpdt = self._computeStress(strainTpdt, muV, lambdaV, viscosityCoeffV,
- powerLawExpV, visStrainT, stressT,
- initialStress, initialStrain)
+ stressTpdt, visStrainTpdt = self._computeStress(strainTpdt, muV, lambdaV,
+ viscosityCoeffV,
+ powerLawExpV, visStrainT,
+ stressT,
+ initialStress,
+ initialStrain)
return stressTpdt[stressComp]
- # def _effStressFunc(self, *args):
def _effStressFunc(self, effStressTpdt, ae, b, c, d, alpha, dt, effStressT,
powerLawExpV, viscosityCoeffV):
"""
Function to compute effective stress function for a given effective stress.
"""
- # effStressTpdt = args[0]
- # effStressTuple = args[1]
- # ae = args[0]
- # b = args[1]
- # c = args[2]
- # d = args[3]
- # alpha = args[4]
- # dt = args[5]
- # effStressT = args[6]
- # powerLawExpV = args[7]
- # viscosityCoeffV = args[8]
- # effStressTpdt = effStressParams[0]
- # effStressTuple = effStressParams[1]
- # ae = effStressTuple[0]
- # b = effStressTuple[1]
- # c = effStressTuple[2]
- # d = effStressTuple[3]
- # alpha = effStressTuple[4]
- # dt = effStressTuple[5]
- # effStressT = effStressTuple[6]
- # powerLawExpV = effStressTuple[7]
- # viscosityCoeffV = effStressTuple[8]
factor1 = 1.0 - alpha
effStressTau = factor1 * effStressT + alpha * effStressTpdt
@@ -356,7 +328,8 @@
powerLawExpV, visStrainT, stressT,
initialStress, initialStrain):
"""
- Function to compute stresses using the effective stress function algorithm.
+ Function to compute stresses and viscous strains using the
+ effective stress function algorithm.
"""
import scipy.optimize
@@ -400,24 +373,20 @@
ae * self._scalarProduct(devStressT, devStressInitial)) * timeFac
d = timeFac * effStressT
- # Define parameters for effective stress function
- # effStressParams = (ae, b, c, d, self.alpha, self.dt, effStressT,
- # powerLawExpV, viscosityCoeffV)
-
# Bracket the root
effStressInitialGuess = effStressT
- # x1, x2 = self._bracket(effStressInitialGuess, effStressParams)
+
x1, x2 = self._bracket(effStressInitialGuess, ae, b, c, d, self.alpha,
self.dt, effStressT, powerLawExpV, viscosityCoeffV)
# Find the root using Brent's method (from scipy)
- # effStressTpdt = scipy.optimize.brentq(self._effStressFunc, x1, x2,
- # args=effStressParams)
+ rootTolerance = 1.0e-12
effStressTpdt = scipy.optimize.brentq(self._effStressFunc, x1, x2,
args=(ae, b, c, d, self.alpha,
self.dt, effStressT,
powerLawExpV,
- viscosityCoeffV))
+ viscosityCoeffV),
+ xtol=rootTolerance)
# Compute stresses from the effective stress.
effStressTau = (1.0 - self.alpha) * effStressT + self.alpha * effStressTpdt
@@ -427,6 +396,7 @@
factor2 = timeFac * gammaTau
devStressTpdt = 0.0
stressTpdt = numpy.zeros( (tensorSize), dtype=numpy.float64)
+ visStrainTpdt = numpy.zeros( (tensorSize), dtype=numpy.float64)
for iComp in range(tensorSize):
devStressTpdt = factor1 * (strainPPTpdt[iComp] - \
@@ -434,15 +404,19 @@
ae * devStressInitial[iComp])
stressTpdt[iComp] = devStressTpdt + diag[iComp] * \
(meanStressTpdt + meanStressInitial)
+ devStressTau = (1.0 - self.alpha) * devStressT[iComp] + \
+ self.alpha * devStressTpdt
+ deltaVisStrain = self.dt * gammaTau * devStressTau
+ visStrainTpdt[iComp] = visStrainT[iComp] + deltaVisStrain
- return stressTpdt
+ return stressTpdt, visStrainTpdt
def _calcStress(self, strainV, muV, lambdaV, viscosityCoeffV,
powerLawExpV,visStrainV, stressV,
initialStressV, initialStrainV):
"""
- Compute stress and derivative of elasticity matrix.
+ Compute stress, updated state variables and derivative of elasticity matrix.
This assumes behavior is always viscoelastic.
"""
import scipy.misc
@@ -454,25 +428,24 @@
initialStress = numpy.array(initialStressV, dtype=numpy.float64)
initialStrain = numpy.array(initialStrainV, dtype=numpy.float64)
- stressTpdt = self._computeStress(strainTpdt, muV, lambdaV,
- viscosityCoeffV, powerLawExpV,
- visStrainT, stressT,
- initialStress, initialStrain)
+ stressTpdt, visStrainTpdt = self._computeStress(strainTpdt, muV, lambdaV,
+ viscosityCoeffV,
+ powerLawExpV,
+ visStrainT, stressT,
+ initialStress,
+ initialStrain)
+ stateVarsUpdated = numpy.array( [visStrainTpdt, stressTpdt],
+ dtype=numpy.float64)
+
# Compute components of tangent constitutive matrix using numerical
# derivatives.
- # calcStressCompParamsList = [0, 0, strainTpdt, muV, lambdaV, viscosityCoeffV,
- # powerLawExpV, visStrainT, stressT,
- # initialStress, initialStrain]
- derivDx = 1.0e-5
- derivOrder = 5
+ derivDx = 1.0e-8
+ derivOrder = 3
elasticConstsList = []
for stressComp in range(tensorSize):
for strainComp in range(stressComp, tensorSize):
- # calcStressCompParamsList[0] = strainComp
- # calcStressCompParamsList[1] = stressComp
- # calcStressCompParamsTuple = tuple(calcStressCompParamsList)
dStressDStrain = scipy.misc.derivative(self._calcStressComponent,
strainTpdt[strainComp],
dx=derivDx,
@@ -488,7 +461,8 @@
elasticConsts = numpy.array(elasticConstsList, dtype=numpy.float64)
- return (elasticConsts, numpy.ravel(stressTpdt))
+ return (elasticConsts, numpy.ravel(stressTpdt),
+ numpy.ravel(stateVarsUpdated))
# MAIN /////////////////////////////////////////////////////////////////
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc 2009-06-12 01:11:27 UTC (rev 15203)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc 2009-06-12 03:02:10 UTC (rev 15204)
@@ -86,7 +86,7 @@
2.00000000e+03,
1.20000000e+03,
2.07846097e+03,
- 1.20000000e+16,
+ 1.00000000e+10,
3.00000000e+00,
};
@@ -114,7 +114,7 @@
2.00000000e+03,
2.88000000e+09,
2.88000000e+09,
- 1.20000000e+16,
+ 1.00000000e+10,
3.00000000e+00,
};
@@ -154,7 +154,7 @@
2.00000000e+00,
1.28000000e-01,
1.28000000e-01,
- 4.25063428e+12,
+ 3.54219523e+06,
3.00000000e+00,
};
@@ -206,18 +206,18 @@
};
const double pylith::materials::PowerLaw3DTimeDepData::_stress[] = {
- -4.05086306e+05,
- 1.86264515e-09,
- 4.05086306e+05,
+ 1.12311566e+07,
+ 1.16362430e+07,
+ 1.20413293e+07,
4.33417161e+06,
4.73925792e+06,
5.14434423e+06,
- -5.28400000e+04,
- 0.00000000e+00,
- 5.28400000e+04,
- 2.50776000e+06,
- 2.56060000e+06,
- 2.61344000e+06,
+ 5.97822104e+06,
+ 6.03098177e+06,
+ 6.08374250e+06,
+ 2.50398815e+06,
+ 2.55674888e+06,
+ 2.60950961e+06,
};
const double pylith::materials::PowerLaw3DTimeDepData::_elasticConsts[] = {
@@ -229,40 +229,40 @@
0.00000000e+00,
6.74326515e+10,
2.25336742e+10,
- 4.65661287e-05,
- 4.65661287e-05,
- 4.65661287e-05,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
6.74326515e+10,
- -2.32830644e-05,
- -2.32830644e-05,
- -2.32830644e-05,
- 4.48989773e+10,
- 2.32830644e-05,
- 2.32830644e-05,
- 4.48989773e+10,
0.00000000e+00,
- 4.48989773e+10,
- 8.64000000e+09,
- 2.88000000e+09,
- 2.88000000e+09,
0.00000000e+00,
0.00000000e+00,
+ 4.48989773e+10,
0.00000000e+00,
- 8.64000000e+09,
- 2.88000000e+09,
- -2.32830644e-05,
- -2.32830644e-05,
- -2.32830644e-05,
- 8.64000000e+09,
0.00000000e+00,
+ 4.48989773e+10,
0.00000000e+00,
- 0.00000000e+00,
- 5.76000000e+09,
- -2.91038305e-06,
- -2.91038305e-06,
- 5.76000000e+09,
- 1.16415322e-05,
- 5.76000000e+09,
+ 4.48989773e+10,
+ 8.63434339e+09,
+ 2.88282694e+09,
+ 2.88282967e+09,
+ 2.58955779e+05,
+ 2.64412072e+05,
+ 2.69868365e+05,
+ 8.63434587e+09,
+ 2.88282860e+09,
+ 1.45530654e+05,
+ 1.48596941e+05,
+ 1.51663274e+05,
+ 8.63434596e+09,
+ 3.20600346e+04,
+ 3.27355228e+04,
+ 3.34110111e+04,
+ 5.74612223e+09,
+ -5.50963872e+06,
+ -5.62332564e+06,
+ 5.74589214e+09,
+ -5.74174896e+06,
+ 5.74565739e+09,
};
const double pylith::materials::PowerLaw3DTimeDepData::_initialStress[] = {
@@ -295,7 +295,32 @@
0.00000000e+00,
};
-const double* pylith::materials::PowerLaw3DTimeDepData::_stateVarsUpdated = 0;
+const double pylith::materials::PowerLaw3DTimeDepData::_stateVarsUpdated[] = {
+ 4.08854078e-05,
+ 4.19057121e-05,
+ 4.29260165e-05,
+ 4.42184086e-05,
+ 4.52387129e-05,
+ 4.62590172e-05,
+ 1.12311566e+07,
+ 1.16362430e+07,
+ 1.20413293e+07,
+ 4.33417161e+06,
+ 4.73925792e+06,
+ 5.14434423e+06,
+ 1.09685691e-05,
+ 1.19823316e-05,
+ 1.29960941e-05,
+ 1.46548344e-05,
+ 1.56685969e-05,
+ 1.66823594e-05,
+ 5.97822104e+06,
+ 6.03098177e+06,
+ 6.08374250e+06,
+ 2.50398815e+06,
+ 2.55674888e+06,
+ 2.60950961e+06,
+};
pylith::materials::PowerLaw3DTimeDepData::PowerLaw3DTimeDepData(void)
{ // constructor
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh 2009-06-12 01:11:27 UTC (rev 15203)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh 2009-06-12 03:02:10 UTC (rev 15204)
@@ -95,7 +95,7 @@
static const double _initialStrain[];
- static const double* _stateVarsUpdated;
+ static const double _stateVarsUpdated[];
};
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh 2009-06-12 01:11:27 UTC (rev 15203)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh 2009-06-12 03:02:10 UTC (rev 15204)
@@ -79,6 +79,11 @@
--data.object=MaxwellIsotropic3DTimeDepData \
--data.parent=ElasticMaterialData
+ python PowerLaw3DTimeDep.py \
+ --data.namespace=pylith,materials \
+ --data.object=PowerLaw3DTimeDepData \
+ --data.parent=ElasticMaterialData
+
fi
More information about the CIG-COMMITS
mailing list