def setUp(self): self.s0 = 200.0 self.K = 1000.0 self.n = 4 self.cs = np.array(range(self.n)) * 10.0 self.rs = np.array(range(1,self.n+1)) * 10.0 self.gammas = [hardening.ConstantGamma(r) for r in self.rs] self.As = (np.array(range(self.n)) + 1.0) * 10.0 self.a_s = np.array([2.0]*self.n) self.iso = hardening.LinearIsotropicHardeningRule(self.s0, self.K) self.model = hardening.Chaboche(self.iso, list(self.cs), self.gammas, list(self.As), list(self.a_s)) self.hist0 = np.zeros((1 + self.n*6,)) self.conform = 7 self.T = 300.0
def setUp(self): n = 20.0 eta = 108.0 sY = 89.0 Q = 165.0 b = 12.0 self.m = 3 C1 = 80.0e3 C2 = 14.02e3 C3 = 3.333e3 y1 = 0.9e3 y2 = 1.5e3 y3 = 1.0 surface = surfaces.IsoKinJ2() iso = hardening.VoceIsotropicHardeningRule(sY, Q, b) cs = [C1, C2, C3] gs = [y1, y2, y3] gmodels = [hardening.ConstantGamma(g) for g in gs] A = [0.0, 0.0, 0.0] ae = [1.0, 1.0, 1.0] self.prefactor = 2.0 hmodel = hardening.Chaboche(iso, cs, gmodels, A, ae) fluidity = visco_flow.ConstantFluidity(eta) self.hist0 = np.zeros((19, )) self.T = 300.0 self.model = visco_flow.ChabocheFlowRule(surface, hmodel, fluidity, n, prefactor=self.prefactor)
def setUp(self): self.s0 = 200.0 self.K = 1000.0 self.n = 2 self.cs = list(np.array(range(self.n)) / (2*self.n)+10.0) self.g0s = np.array(range(1,self.n+1)) * 10.0 self.gss = 2.0 * self.g0s self.betas = np.array(range(self.n)) / self.n self.gammas = [hardening.SatGamma(a, b, c) for a,b,c in zip(self.g0s, self.gss, self.betas)] self.As = [0.0] * self.n self.ns = [1.0] * self.n self.iso = hardening.LinearIsotropicHardeningRule(self.s0, self.K) self.model = hardening.Chaboche(self.iso, self.cs, self.gammas, self.As, self.ns) self.hist0 = np.zeros((1 + self.n*6,)) self.conform = 7 self.T = 300.0
def setUp(self): self.model1 = parse.parse_xml(localize("examples.xml"), "test_rd_chaboche") mu = 60384.61 K = 130833.3 elastic = elasticity.IsotropicLinearElasticModel( mu, "shear", K, "bulk") r = -80.0 d = 3.0 Cs = [135.0e3, 61.0e3, 11.0e3] gs = [5.0e4, 1100.0, 1.0] As = [0.0, 0.0, 0.0] ns = [1.0, 1.0, 1.0] gmodels = [hardening.ConstantGamma(g) for g in gs] eta = 701.0 n = 10.5 surface = surfaces.IsoKinJ2() iso = hardening.VoceIsotropicHardeningRule(0.0, r, d) hmodel = hardening.Chaboche(iso, Cs, gmodels, As, ns) fluidity = visco_flow.ConstantFluidity(eta) vmodel = visco_flow.ChabocheFlowRule(surface, hmodel, fluidity, n) flow = general_flow.TVPFlowRule(elastic, vmodel) self.model2 = models.GeneralIntegrator(elastic, flow) self.T = 550.0 + 273.15 self.tmax = 10.0 self.nsteps = 100 self.emax = np.array([0.1, 0, 0, 0, 0, 0])
def setUp(self): s0 = 200.0 K = 1000.0 self.n = 2 cvals1 = [1000.0,10.0] cvals2 = [100.0,100.0] Ts = [0.0,1000.0] cs = [interpolate.PiecewiseLinearInterpolate(Ts, [ci,cj]) for ci,cj in zip(cvals1, cvals2)] rs = [1.0e-2,1.0] gammas = [hardening.ConstantGamma(r) for r in rs] self.As = [0.0] * self.n self.ns = [1.0] * self.n iso = hardening.LinearIsotropicHardeningRule(s0, K) self.model = hardening.Chaboche(iso, cs, gammas, self.As, self.ns) self.hist0 = np.zeros((1 + self.n*6,)) self.conform = 7 self.T = 300.0
def setUp(self): self.hist0 = np.zeros((13, )) self.E = 92000.0 self.nu = 0.3 self.mu = self.E / (2 * (1 + self.nu)) self.K = self.E / (3 * (1 - 2 * self.nu)) self.s0 = 180.0 self.Kp = 1000.0 self.n = 2 self.cs = [10.0, 2.0] self.rs = [5.0, 1.0] self.gmodels = [hardening.ConstantGamma(g) for g in self.rs] self.As = [0.0] * self.n self.ns = [1.0] * self.n self.elastic = elasticity.IsotropicLinearElasticModel( self.mu, "shear", self.K, "bulk") surface = surfaces.IsoKinJ2() iso = hardening.LinearIsotropicHardeningRule(self.s0, self.Kp) hmodel = hardening.Chaboche(iso, self.cs, self.gmodels, self.As, self.ns) flow = ri_flow.RateIndependentNonAssociativeHardening(surface, hmodel) self.model = models.SmallStrainRateIndependentPlasticity( self.elastic, flow, check_kt=False) self.efinal = np.array([0.1, -0.05, 0.02, -0.03, 0.1, -0.15]) self.tfinal = 10.0 self.T = 300.0 self.nsteps = 30
def setUp(self): self.n = 20.0 self.eta = 108.0 self.sY = 89.0 self.Q = 165.0 self.b = 12.0 self.m = 3 C1 = 80.0e3 C2 = 14.02e3 C3 = 3.333e3 y1 = 0.9e3 y2 = 1.5e3 y3 = 1.0 surface = surfaces.IsoKinJ2() self.iso = hardening.VoceIsotropicHardeningRule( self.sY, self.Q, self.b) self.cs = [C1, C2, C3] self.gs = [y1, y2, y3] self.As = [0.0, 0.0, 0.0] self.ns = [1.0, 1.0, 1.0] self.gmodels = [hardening.ConstantGamma(g) for g in self.gs] self.hmodel = hardening.Chaboche(self.iso, self.cs, self.gmodels, self.As, self.ns) self.fluidity = visco_flow.ConstantFluidity(self.eta) self.hist0 = np.zeros((19, )) self.T = 300.0 self.model = visco_flow.ChabocheFlowRule(surface, self.hmodel, self.fluidity, self.n)
def setUp(self): # Fully-defined perfectly plastic model Epoly = [-78.2759, 236951.0] nu = 0.3 A = -9.6187 B = -1.4819 C = -5.0486 g0 = 0.3708 b = 0.248 * 1.0e-6 kboltz = 1.38064e-23 * 1000.0 eps0 = 1.0e10 # Temperature range over which to consider (K) Tmin = 550.0 Tmax = 950.0 Trange = np.linspace(Tmin, Tmax) # Elastic E_m = interpolate.PolynomialInterpolate(Epoly) nu_m = interpolate.ConstantInterpolate(nu) elastic_m = elasticity.IsotropicLinearElasticModel( E_m, "youngs", nu_m, "poissons") self.elastic = elastic_m # Rate sensitivity interpolates values mu_values = np.array([elastic_m.G(T) for T in Trange]) n_values = -mu_values * b**3.0 / (kboltz * Trange * A) eta_values = np.exp(B) * eps0**(kboltz * Trange * A / (mu_values * b**3.0)) * mu_values # Rate independent interpolate values flow_stress = mu_values * np.exp(C) # Common objects surface = surfaces.IsoKinJ2() hmodulus = interpolate.PolynomialInterpolate([-10.0, 12000.0]) # Setup visco model n_interp = interpolate.PiecewiseLinearInterpolate( list(Trange), list(n_values)) eta_interp = interpolate.PiecewiseLinearInterpolate( list(Trange), list(eta_values)) eta_m = visco_flow.ConstantFluidity(eta_interp) iso_rd = hardening.LinearIsotropicHardeningRule( interpolate.ConstantInterpolate(0.0), hmodulus) hard_rd = hardening.Chaboche( iso_rd, [interpolate.ConstantInterpolate(0.0)], [hardening.ConstantGamma(interpolate.ConstantInterpolate(0.0))], [interpolate.ConstantInterpolate(0.0)], [interpolate.ConstantInterpolate(1.0)]) visco_rd = visco_flow.ChabocheFlowRule(surface, hard_rd, eta_m, n_interp) general_rd = general_flow.TVPFlowRule(elastic_m, visco_rd) rate_dependent = models.GeneralIntegrator(elastic_m, general_rd) # Setup rate independent sy_interp = interpolate.PiecewiseLinearInterpolate( list(Trange), list(flow_stress)) iso_ri = hardening.LinearIsotropicHardeningRule(sy_interp, hmodulus) hard_ri = hardening.Chaboche( iso_ri, [interpolate.ConstantInterpolate(0.0)], [hardening.ConstantGamma(interpolate.ConstantInterpolate(0.0))], [interpolate.ConstantInterpolate(0.0)], [interpolate.ConstantInterpolate(1.0)]) flow_ri = ri_flow.RateIndependentNonAssociativeHardening( surface, hard_ri) rate_independent = models.SmallStrainRateIndependentPlasticity( elastic_m, flow_ri) # Combined model self.model = models.KMRegimeModel(elastic_m, [rate_independent, rate_dependent], [g0], kboltz, b, eps0) self.efinal = np.array([0.05, 0, 0, 0.02, 0, -0.01]) self.tfinal = 10.0 self.T = 700.0 self.nsteps = 100
E = 200000.0 nu = 0.27 mu = E / (2 * (1.0 + nu)) K = E / (3 * (1 - 2 * nu)) s0 = 300.0 Kp = 0.0 c = [30000.0] r = [60.0] elastic = elasticity.IsotropicLinearElasticModel(mu, "shear", K, "bulk") surface = surfaces.IsoKinJ2() iso = hardening.LinearIsotropicHardeningRule(s0, Kp) gmodels = [hardening.ConstantGamma(g) for g in r] hrule = hardening.Chaboche(iso, c, gmodels, [0.0] * len(c), [1.0] * len(c)) flow = ri_flow.RateIndependentNonAssociativeHardening(surface, hrule) model = models.SmallStrainRateIndependentPlasticity(elastic, flow, verbose = False, check_kt = False) umodel = uniaxial.UniaxialModel(model, verbose = True) hn = umodel.init_store() en = 0.0 sn = 0.0 un = 0.0 pn = 0.0 tn = 0.0 Tn = 0.0 dt = 1.0
np.exp(B) * eps0**(kboltz * T * A / (mu * b**3.0)) * mu) flow_stress_values.append(mu * np.exp(C)) n_interp = interpolate.PiecewiseLinearInterpolate(list(Ts_rate), n_values) eta_interp = interpolate.PiecewiseLinearInterpolate( list(Ts_rate), eta_values) eta_m = visco_flow.ConstantFluidity(eta_interp) flow_interp = interpolate.PiecewiseLinearInterpolate( list(Ts_rate), flow_stress_values) iso_rd = hardening.LinearIsotropicHardeningRule(0.0, -K / 10) iso_ri = hardening.LinearIsotropicHardeningRule( flow_interp, interpolate.ConstantInterpolate(-K / 10)) hmodel_rd = hardening.Chaboche(iso_rd, [K * 3.0 / 2.0], [hardening.ConstantGamma(0.0)], [0.0], [1.0]) hmodel_ri = hardening.Chaboche(iso_ri, [K * 3.0 / 2.0], [hardening.ConstantGamma(0.0)], [0.0], [1.0]) surface_m = surfaces.IsoKinJ2() visco_flow_m = visco_flow.ChabocheFlowRule(surface_m, hmodel_rd, eta_m, n_interp) rd_flow = general_flow.TVPFlowRule(elastic_m, visco_flow_m) rd_model = models.GeneralIntegrator(elastic_m, rd_flow) ri_flow_m = ri_flow.RateIndependentNonAssociativeHardening( surface_m, hmodel_ri) ri_model = models.SmallStrainRateIndependentPlasticity(
surface = surfaces.IsoKinJ2() hmodulus = interpolate.PolynomialInterpolate([-10.0, 12000.0]) #hmodulus = interpolate.ConstantInterpolate(1000.0) # Setup visco model n_interp = interpolate.PiecewiseLinearInterpolate(list(Trange), list(n_values)) eta_interp = interpolate.PiecewiseLinearInterpolate( list(Trange), list(eta_values)) eta_m = visco_flow.ConstantFluidity(eta_interp) iso_rd = hardening.LinearIsotropicHardeningRule( interpolate.ConstantInterpolate(0.0), hmodulus) hard_rd = hardening.Chaboche( iso_rd, [interpolate.ConstantInterpolate(0.0)], [hardening.ConstantGamma(interpolate.ConstantInterpolate(0.0))], [interpolate.ConstantInterpolate(0.0)], [interpolate.ConstantInterpolate(1.0)]) visco_rd = visco_flow.ChabocheFlowRule(surface, hard_rd, eta_m, n_interp) general_rd = general_flow.TVPFlowRule(elastic_m, visco_rd) rate_dependent = models.GeneralIntegrator(elastic_m, general_rd) # Setup rate independent sy_interp = interpolate.PiecewiseLinearInterpolate(list(Trange), list(flow_stress)) iso_ri = hardening.LinearIsotropicHardeningRule(sy_interp, hmodulus) hard_ri = hardening.Chaboche( iso_ri, [interpolate.ConstantInterpolate(0.0)], [hardening.ConstantGamma(interpolate.ConstantInterpolate(0.0))],
def uniaxial(): # Data from "Numerical modeling of elasto-viscoplastic Chaboche constitutive..." # by A. Ambroziak E = 159000.0 nu = 0.3 k = 514.21 b = 60.0 R1 = -194.39 a = 170000.0 c = 500.0 n = 4.0 eta = 1023.5 # Translate Q = R1 b = b C1 = a g1 = c eta = eta sY = k mu = E / (2 * (1.0 + nu)) K = E / (3 * (1 - 2 * nu)) elastic = elasticity.IsotropicLinearElasticModel(mu, "shear", K, "bulk") surface = surfaces.IsoKinJ2() iso = hardening.VoceIsotropicHardeningRule(sY, Q, b) cs = [C1] gs = [hardening.ConstantGamma(g1)] hmodel = hardening.Chaboche(iso, cs, gs, [0.0], [1.0]) fluidity = visco_flow.ConstantFluidity(eta) vmodel = visco_flow.ChabocheFlowRule( surface, hmodel, fluidity, n) flow = general_flow.TVPFlowRule(elastic, vmodel) model = models.GeneralIntegrator(elastic, flow) erates = [1.0e-7, 1.0e-2, 1.0e-1] e_7 = np.array([1.03E-007, 0.000977076, 0.0019927018, 0.0029695719, 0.0038278073, 0.0048024128, 0.0058155682, 0.0068186871, 0.0078116926, 0.0088238185, 0.0098260368, 0.0108280492, 0.0118396862, 0.0128318167, 0.0138433765, 0.0148451316, 0.0158469381, 0.0168487447, 0.017840798, 0.0188523063, 0.019844411]) s_7 = np.array([1.9738128815, 164.2845378653, 316.6592895303, 475.0018013938, 559.9786920852, 631.0205153016, 688.1581520788, 733.3950096246, 763.7549280987, 781.2104336727, 791.7254264156, 794.3039929179, 792.9104861704, 789.5405931218, 785.170926534, 777.8289602355, 772.4711004972, 767.1132407589, 760.7671878699, 754.413414722, 750.0514683933]) e_2 = np.array([-1.94E-005, 0.000976973, 0.0019830515, 0.0029890784, 0.0037900553, 0.0048443338, 0.0058197114, 0.0068040701, 0.0078172512, 0.0088300977, 0.0098231803, 0.0108257074, 0.0118377047, 0.0128397943, 0.0138612103, 0.0148630941, 0.0158551988, 0.0168667329, 0.017878267, 0.0188703202, 0.0198623735]) s_2 = np.array([-0.0025734197, 160.316324745, 319.6393095, 476.9781876949, 604.6365302068, 747.075308553, 847.8787301718, 919.9087465388, 978.0384365961, 1023.2714340124, 1056.6075123267, 1079.0271444306, 1091.5223836042, 1097.0771099468, 1097.66384963, 1095.2821497319, 1090.9202034031, 1085.5584835353, 1080.1967636674, 1073.8507107785, 1067.5046578896]) e_1 = np.array([-1.93E-005, 0.0009672712, 0.0019928047, 0.0029793251, 0.0037900295, 0.0047863804, 0.0058017489, 0.0068163453, 0.0078302727, 0.0088243075, 0.0098374371, 0.0108404531, 0.0118432376, 0.0128554407, 0.0138577362, 0.014850124, 0.01587154, 0.0168734495, 0.0178753075, 0.0188770883, 0.0198789206]) s_1 = np.array([2.9735864206, 161.3122381546, 320.6275026506, 475.9899945444, 603.6444769267, 762.9713218113, 905.4255406755, 1018.1181611373, 1105.0173963169, 1175.0594459942, 1231.2050294914, 1272.4736739169, 1304.8138388216, 1325.2455042359, 1338.7366568191, 1345.2872965712, 1345.8740362543, 1344.4843896363, 1341.1106364582, 1334.7607234397, 1330.3949169815]) plt.plot(e_7, s_7, 'kx') plt.plot(e_2, s_2, 'rx') plt.plot(e_1, s_1, 'bx') res = drivers.uniaxial_test(model, erates[0], emax = 0.02) plt.plot(res['strain'], res['stress'], 'k-') res = drivers.uniaxial_test(model, erates[1], emax = 0.02) plt.plot(res['strain'], res['stress'], 'r-') res = drivers.uniaxial_test(model, erates[2], emax = 0.02) plt.plot(res['strain'], res['stress'], 'b-') plt.xlim([0,0.02]) plt.ylim([0,1500]) plt.show()
def koo(): # Data from Koo & Kwon (2011) E = 157.0e3 nu = 0.27 sY = 0.0 b = 3.0 Q = -80.0 C1 = 135.0e3 C2 = 123.0e3 C3 = 4.0e3 g1 = 100e3 g2 = 0.85e3 g3 = 1.0 eta = 701.0 n = 10.5 mu = E / (2 * (1.0 + nu)) K = E / (3 * (1 - 2 * nu)) elastic = elasticity.IsotropicLinearElasticModel(mu, "shear", K, "bulk") surface = surfaces.IsoKinJ2() iso = hardening.VoceIsotropicHardeningRule(sY, Q, b) cs = [C1, C2, C3] gs = [hardening.ConstantGamma(g1), hardening.ConstantGamma(g2), hardening.ConstantGamma(g3)] hmodel = hardening.Chaboche(iso, cs, gs, [0.0]*len(cs), [1.0]*len(cs)) fluidity = visco_flow.ConstantFluidity(eta) vmodel = visco_flow.ChabocheFlowRule( surface, hmodel, fluidity, n) flow = general_flow.TVPFlowRule(elastic, vmodel) model = models.GeneralIntegrator(elastic, flow) e500 = np.array([0.0058793164, 0.0052876081, 0.004710156, 0.0042916722, 0.0038731605, 0.0032237573, 0.0027900399, 0.0024864991, 0.0017489338, 0.000635346, -0.0006668255, -0.0017811254, -0.0034891722, -0.0044012326, -0.0059358454, -0.005661599, -0.0051996206, -0.0048027165, -0.0044347716, -0.0039945684, -0.0034388636, -0.0032440594, -0.0026585856, -0.002036857, -0.001161945, -0.0003736313, 0.0008344368, 0.0022454705, 0.0035554683, 0.0052854997]) s500 = np.array([349.6965238343, 255.0932943767, 171.2928564634, 102.3697757811, 34.7967386021, -70.6166129529, -103.0909625627, -128.7931029969, -172.1191145041, -237.1093535238, -285.2558144812, -315.8199441656, -342.4341275638, -350.0133084444, -361.0726693423, -319.1748939033, -252.9445696747, -190.7753717856, -128.6110609317, -59.6843149729, 25.4625011672, 57.8965327357, 103.8969743143, 147.2034376803, 200.6779888803, 240.6374439409, 288.0930002819, 323.4323743399, 343.229143486, 357.0215788789]) res = drivers.strain_cyclic(model, 0.006, -1.0, 1.0e-4, 130, verbose = False, nsteps = 50) plt.plot(res['strain'][-100:], res['stress'][-100:], 'k-') plt.plot(e500, s500, 'kx') plt.xlabel("Strain (-/-)") plt.ylabel("Stress (MPa)") plt.show() n500 = np.array([1.8000456006, 7.2646606231, 17.3775914892, 25.6289731945, 35.040864809, 43.9864865417, 54.6731673353, 69.3076477381, 83.9405590891, 98.1077889527, 112.0424068927, 126.7891398736]) ns500 = sn500 = np.array([437.8476941068, 428.2481618804, 413.6055992266, 403.8518586317, 394.8643791744, 388.2393032756, 382.3835530687, 376.4641827161, 372.5718311079, 370.2817510291, 368.4971998147, 367.5615301197]) plt.plot(res['cycles'], res['max'], 'k-') plt.plot(n500, ns500, 'kx') plt.xlabel("Cycle") plt.ylabel("Stress (MPa)") plt.show()
mu = E / (2 * (1.0 + nu)) K = E / (3 * (1 - 2 * nu)) s0 = 300.0 Kp = 0.0 c = [30000.0] r = [60.0] elastic = elasticity.IsotropicLinearElasticModel(mu, "shear", K, "bulk") surface = surfaces.IsoKinJ2() iso = hardening.LinearIsotropicHardeningRule(s0, Kp) gmodels = [hardening.ConstantGamma(g) for g in r] As = [0.0] ns = [1.0] hrule = hardening.Chaboche(iso, c, gmodels, As, ns) flow = ri_flow.RateIndependentNonAssociativeHardening(surface, hrule) model = models.SmallStrainRateIndependentPlasticity(elastic, flow, verbose=False, check_kt=False) # Uniaxial stress/strain curves at decades of strain rates erates = np.logspace(-6, 2, 9) for rate in erates: res = drivers.uniaxial_test(model, rate) plt.plot(res['strain'], res['stress']) plt.xlabel("Strain (-/-)") plt.ylabel("Stress (MPa)")
E = 150000.0 nu = 0.3 sY = 150.0 h = 1.0e-2 l = 1.0 K = E / 50.0 emodel = elasticity.IsotropicLinearElasticModel(E, "youngs", nu, "poissons") surface = surfaces.IsoKinJ2I1(h, l) hiso = hardening.LinearIsotropicHardeningRule(sY, -K / 10) hmodel = hardening.Chaboche(hiso, [K * 3.0 / 2.0], [hardening.ConstantGamma(0.0)], [0.0], [1.0]) flow = ri_flow.RateIndependentNonAssociativeHardening(surface, hmodel) #hkin = hardening.LinearKinematicHardeningRule(K) #hmodel = hardening.CombinedHardeningRule(hiso, hkin) #flow = ri_flow.RateIndependentAssociativeFlow(surface, hmodel) model = models.SmallStrainRateIndependentPlasticity(emodel, flow) smax = 200.0 Rs = [-1.0, -0.75, -0.5, -0.25, 0.0] srate = 1.0 ncycles = 50 for R in Rs: res = drivers.stress_cyclic(model, smax, R, srate, ncycles) plt.plot(res['cycles'], res['max'])
b = 12.0 C1 = 80.0e3 C2 = 14.02e3 C3 = 3.333e3 y1 = 0.9e3 y2 = 1.5e3 y3 = 1.0 surface = surfaces.IsoKinJ2() iso = hardening.VoceIsotropicHardeningRule(sY, Q, b) cs = [C1, C2, C3] gs = np.array([y1, y2, y3]) gmodels = [hardening.ConstantGamma(g) for g in gs] hmodel = hardening.Chaboche(iso, cs, gmodels, [0.0] * len(cs), [1.0] * len(cs)) fluidity = visco_flow.ConstantFluidity(eta) vmodel = visco_flow.ChabocheFlowRule(surface, hmodel, fluidity, n) E = 92000.0 nu = 0.3 mu = E / (2 * (1 + nu)) K = E / (3 * (1 - 2 * nu)) elastic = elasticity.IsotropicLinearElasticModel(mu, "shear", K, "bulk") flow = general_flow.TVPFlowRule(elastic, vmodel)
C = 24800.0 g0 = 300.0 Q = 86 - k gs = 300.0 b = 10.0 beta = 0.0 elastic = elasticity.IsotropicLinearElasticModel(mu, "shear", K, "bulk") surface = surfaces.IsoKinJ2() iso = hardening.VoceIsotropicHardeningRule(k, Q, b) cs = [C] gs = [hardening.SatGamma(gs, g0, beta)] As = [0.0] ns = [1.0] hmodel = hardening.Chaboche(iso, cs, gs, As, ns) fluidity = visco_flow.ConstantFluidity(eta) vmodel = visco_flow.ChabocheFlowRule( surface, hmodel, fluidity, n) flow = general_flow.TVPFlowRule(elastic, vmodel) model = models.GeneralIntegrator(elastic, flow, verbose = False) # Uniaxial stress/strain curves at decades of strain rates erates = np.logspace(-6,2,9) for rate in erates: res = drivers.uniaxial_test(model, rate, verbose = False) plt.plot(res['strain'], res['stress'])