예제 #1
0
파일: test_damage.py 프로젝트: dvp2015/neml
  def setUp(self):
    self.E = 92000.0
    self.nu = 0.3

    self.s0 = 180.0
    self.Kp = 1000.0
    self.H = 1000.0

    self.elastic = elasticity.IsotropicLinearElasticModel(self.E, "youngs",
        self.nu, "poissons")

    surface = surfaces.IsoKinJ2()
    iso = hardening.LinearIsotropicHardeningRule(self.s0, self.Kp)
    kin = hardening.LinearKinematicHardeningRule(self.H)
    hrule = hardening.CombinedHardeningRule(iso, kin)

    flow = ri_flow.RateIndependentAssociativeFlow(surface, hrule)

    self.bmodel = models.SmallStrainRateIndependentPlasticity(self.elastic, 
        flow)

    self.fn = interpolate.PolynomialInterpolate([-6.653e-9,2.952e-4,-6.197e-1])
    self.C = 32.06

    self.lmr = larsonmiller.LarsonMillerRelation(self.fn, self.C)
    self.effective = damage.VonMisesEffectiveStress()

    self.model = damage.LarsonMillerCreepDamageModel_sd(
        self.elastic, self.lmr, self.effective, self.bmodel)

    self.stress = np.array([100,-50.0,300.0,-99,50.0,125.0])
    self.T = 100.0

    self.s_np1 = self.stress
    self.s_n = np.array([-25,150,250,-25,-100,25])

    self.d_np1 = 0.5
    self.d_n = 0.4

    self.e_np1 = np.array([0.1,-0.01,0.15,-0.05,-0.1,0.15])
    self.e_n = np.array([-0.05,0.025,-0.1,0.2,0.11,0.13])

    self.T_np1 = self.T
    self.T_n = 90.0

    self.t_np1 = 1.0
    self.t_n = 0.0
    self.dt = self.t_np1 - self.t_n

    self.u_n = 0.0
    self.p_n = 0.0
  
    # This is a rather boring baseline history state to probe, but I can't
    # think of a better way to get a "generic" history from a generic model
    self.hist_n = np.array([self.d_n] + list(self.bmodel.init_store()))
    self.x_trial = np.array([50,-25,150,-150,190,100.0] + [0.41])

    self.nsteps = 10
    self.etarget = np.array([0.1,-0.025,0.02,0.015,-0.02,-0.05])
    self.ttarget = 10.0
예제 #2
0
파일: test_damage.py 프로젝트: dvp2015/neml
  def setUp(self):
    self.stresses = [damage.VonMisesEffectiveStress(), 
        damage.MaxPrincipalEffectiveStress()]
    self.weights = [0.37, 1.0-0.37]
    self.es = damage.SumSeveralEffectiveStress(self.stresses, self.weights)

    self.stress = np.array([100,-50.0,300.0,-99,50.0,125.0])
예제 #3
0
파일: test_damage.py 프로젝트: ajey091/neml
    def setUp(self):
        self.es = damage.MaxSeveralEffectiveStress([
            damage.VonMisesEffectiveStress(),
            damage.MaxPrincipalEffectiveStress()
        ])

        self.stress = np.array([100, -50.0, 300.0, -99, 50.0, 125.0])
예제 #4
0
파일: test_damage.py 프로젝트: dvp2015/neml
 def effective_model(self):
   return damage.MaxSeveralEffectiveStress([
     damage.VonMisesEffectiveStress(),
     damage.MaxPrincipalEffectiveStress()])
예제 #5
0
파일: test_damage.py 프로젝트: dvp2015/neml
 def effective_model(self):
   return damage.VonMisesEffectiveStress()
예제 #6
0
파일: test_damage.py 프로젝트: dvp2015/neml
  def setUp(self):
    self.es = damage.VonMisesEffectiveStress()

    self.stress = np.array([100,-50.0,300.0,-99,50.0,125.0])
예제 #7
0
    S = 1.0e19

    # Loading
    srate = 100.0

    # Setup model
    emodel = elasticity.IsotropicLinearElasticModel(E, "youngs", nu,
                                                    "poissons")
    bmodel = models.SmallStrainElasticity(emodel)
    scmodel = creep.PowerLawCreep(A, n)
    cfmodel = creep.J2CreepModel(scmodel)
    cmodel = models.SmallStrainCreepPlasticity(emodel, bmodel, cfmodel)
    model = damage.ClassicalCreepDamageModel_sd(emodel, S, xi, phi, cmodel)

    model2 = damage.ModularCreepDamageModel_sd(
        emodel, S, xi, phi, damage.VonMisesEffectiveStress(), cmodel)

    # Computed life
    srange = np.linspace(s0 / 2, s0, 10)
    tfs = S**(xi) / (1 + phi) * srange**(-xi)

    slife = []
    slife2 = []
    for s, tf in zip(srange, tfs):
        res = drivers.creep(model,
                            s,
                            srate,
                            tf * 1.25,
                            verbose=False,
                            logspace=False,
                            check_dmg=True,
예제 #8
0
    fluidity = visco_flow.ConstantFluidity(eta)

    vmodel = visco_flow.ChabocheFlowRule(surface, hmodel, fluidity, n)

    mu = E / (2 * (1 + nu))
    K = E / (3 * (1 - 2 * nu))

    elastic = elasticity.IsotropicLinearElasticModel(mu, "shear", K, "bulk")
    fmodel = general_flow.TVPFlowRule(elastic, vmodel)
    bmodel = models.GeneralIntegrator(elastic, fmodel, verbose=False)
    A = 1e4
    xi = 4.0
    phi = 2.0

    model = damage.ModularCreepDamageModel_sd(elastic, A, xi, phi,
                                              damage.VonMisesEffectiveStress(),
                                              bmodel)

    emax = np.array([2.0, 2.0, 1.0, 2.0]) / 200.0
    R = np.array([-1.0, -1.0, -1.0, -1.0])
    erate = np.array([0.004, 0.004, 0.004, 0.004])
    hold_t = np.array([0.0, 6.0, 30.0, 6.0]) * 60.0
    hold_c = np.array([0.0, 0.0, 0.0, 6.0]) * 60.0
    ncycles = np.array([500, 500, 200, 120])

    time_act = []
    time_ext = []
    for r in range(len(emax)):
        start = time.time()
        res = drivers.strain_cyclic_extrapolated(
            model,