def test_Fe(self): Qc = rotations.Orientation(12.0,35.0,61.0, angle_type = "degrees") h = self.model.init_store() h[:4] = Qc.quat h[4:8] = self.Q.quat h[8] = self.strength_np1 Fe1 = self.model.Fe(self.stress_np1, h, self.T) Re = (Qc * self.Q.inverse()).to_matrix() E = common.usym(np.array(self.emodel.S_tensor(self.T, Qc ).dot(self.S_np1).data)) + np.eye(3) Fe2 = la.inv(np.dot(E, Re)) self.assertTrue(np.allclose(Fe1,Fe2, rtol = 1e-3))
def setUp(self): self.tau0 = 10.0 self.tau_sat = 50.0 self.b = 2.5 self.strengthmodel = slipharden.VoceSlipHardening( self.tau_sat, self.b, self.tau0) self.g0 = 1.0 self.n = 3.0 self.slipmodel = sliprules.PowerLawSlipRule(self.strengthmodel, self.g0, self.n) self.imodel = inelasticity.AsaroInelasticity(self.slipmodel) self.L = crystallography.CubicLattice(1.0) self.L.add_slip_system([1, 1, 0], [1, 1, 1]) self.Q = rotations.Orientation(35.0, 17.0, 14.0, angle_type="degrees") self.mu = 29000.0 self.E = 120000.0 self.nu = 0.3 self.emodel = elasticity.CubicLinearElasticModel( self.E, self.nu, self.mu, "moduli") self.kmodel = kinematics.StandardKinematicModel( self.emodel, self.imodel) self.model = singlecrystal.SingleCrystalModel(self.kmodel, self.L, initial_rotation=self.Q) self.model_no_rot = singlecrystal.SingleCrystalModel( self.kmodel, self.L, initial_rotation=self.Q, update_rotation=False, verbose=False) self.T = 300.0 self.stress_n = np.array([120.0, -60.0, 170.0, 35.0, 80.0, -90.0]) self.stress_np1 = np.array([15.0, -40.0, 120.0, 70.0, -10.0, -50.0]) self.d = np.array([0.1, -0.2, 0.25, 0.11, -0.05, 0.075]) self.w = np.array([0.1, 0.2, -0.2]) self.strength_n = 25.0 self.strength_np1 = 30.0 self.S_np1 = tensors.Symmetric(common.usym(self.stress_np1)) self.S_n = tensors.Symmetric(common.usym(self.stress_n)) self.D = tensors.Symmetric(common.usym(self.d)) self.W = tensors.Skew(common.uskew(self.w)) self.strength_n = 25.0 self.strength_np1 = 30.0 self.H_n = history.History() self.H_n.add_scalar("strength") self.H_n.set_scalar("strength", self.strength_n) self.H_np1 = history.History() self.H_np1.add_scalar("strength") self.H_np1.set_scalar("strength", self.strength_np1) self.dt = 2.0 self.fixed = self.kmodel.decouple(self.S_n, self.D, self.W, self.Q, self.H_n, self.L, self.T, history.History()) self.ts = singlecrystal.SCTrialState(self.D, self.W, self.S_n, self.H_n, self.Q, self.L, self.T, self.dt, self.fixed) self.x = np.zeros((self.model.nparams, )) self.x[:6] = self.stress_np1 self.x[6] = self.strength_np1 self.Ddir = np.array([0.01, -0.005, -0.003, 0.01, 0.02, -0.003]) * 2 self.Wdir = np.array([0.02, -0.03, 0.01]) * 2 self.nsteps = 10
def test_product_symmetric(self): self.assertEqual(tensors.Symmetric(common.usym(np.dot(self.SS1, common.sym(self.S)))), self.TSS1 * self.TS)