Skip to content

A finite element implementation of a viscoelastic viscoplastic constitutive model using the deal.ii library with the option to include a pretrained Deep-Learning model

Notifications You must be signed in to change notification settings

BBahtiri/LSTM_assisted_viscoelastic_viscoplastic_model

Repository files navigation

Viscoelastic-Viscoplastic damage model

In this work we take a classical approach to solving the equations governing quasi-static finite-strain compressible viscoelasticity-visoplasticity, with code based on step-44 and the code Quasi_static_Finite_strain_Compressible_Elasticity from the code gallery of deal.ii. The formulation adopted here is an updated lagrangian formulation and we run the model for cyclic loading-unloading conditions at different volume fraction of nanoparticles and different moisture content.

The stress response of a nanoparticle/ epoxy system is decomposed into an equilibrium part and two viscous parts to capture the nonlinear and rate-depended behavior of the material. We introduce the nanoparticle dependency through an amplification factor, which is a function of fillers’ weight fraction.

Reference: Bahtiri et al. "A machine learning-based viscoelastic–viscoplastic model for epoxy nanocomposites with moisture content"; DOI: https://doi.org/10.1016/j.cma.2023.116293

This is an image

Note: Functions "lstm_forward" are used to incorporate the pretrained Deep-Learning model. Use the options "set Switch to ML = Off" and "set At which timestep switch to ML ? = 2147483646" in the parameter file to exclude the Deep-Learning model and continue with the constitutive model.

Run the code

Compile it using the following commands and run in release mode

cmake -DDEAL_II_DIR=/path/to/deal.II .
make release
make

you can run it by typing

./vevp_ml_model

Note: Create an "output" folder in the running directory before running.

The parameter file is already in the current directory, and has the following options:

subsection Assembly method
  # The automatic differentiation order to be used in the assembly of the linear system.
  # Order = 0: Both the residual and linearisation are computed manually.
  # Order = 1: The residual is computed manually but the linearisation is performed using AD.
  # Order = 2: Both the residual and linearisation are computed using AD. 
  set Automatic differentiation order = 0
end

subsection Boundary conditions
  # Positive stretch in mm applied length-ways to the model (Driver = Dirichlet)
  set First stretch = 0.5
  set Second stretch = 0.7
  set Third stretch = 0.9
  set Fourth stretch = 1.1
  set Fifth stretch = 1.3
  set Sixth stretch = 1.5
  set Seventh stretch = 1.65

  # Load type: cyclic or none
  set Load type = cyclic_to_zero
  
  # Total cycles (is set to 7 here)
  set Total cycles = 7
  
end

subsection Finite element system
  # Displacement system polynomial order
  set Polynomial degree = 1

  # Gauss quadrature order
  set Quadrature order  = 2

  # Switch to ML ?
  set Switch to ML = Off

  # Hidden Size of LSTM
  set LSTM = 200

  # Alpha for perturbation
  set alpha = 1e-4
end

subsection Linear solver
  # Linear solver iterations (multiples of the system matrix size)
  set Max iteration multiplier  = 1.0

  # Linear solver residual (scaled by residual norm)
  set Residual                  = 1e-3

  # Preconditioner type
  set Preconditioner type        = ssor

  # Preconditioner relaxation value
  set Preconditioner relaxation  = 0.9

  # Type of solver used to solve the linear system
  set Solver type               = Direct
end


subsection Material properties
  # mu1
  set mu1 = 760.0
  
  # mu2
  set mu2 = 790.0

  # m
  set m = 0.657
  
  # gamma_dot_0
  set gamma_dot_0 = 9.7746e11
  
  # dG
  set dG = 1.9761e-19
  
  # Ad
  set Ad = 320.00

  # tau0
  set tau0 = 85.0
  
  # d0s (not needed)
  set d0s = 0.1
  
  # m_tau (not needed)
  set m_tau = 2

  # a
  set a = 0.179
  
  # b
  set b = 0.910

  # sigma0
  set sigma0 = 5.5

  # nu1
  set nu1 = 0.23

  # nu2
  set nu2 = 0.0

  # de (not needed actually)
  set de = 1e-4

  # Temperature
  set temp = 296.0
  
  # Water content
  set zita = 0.0
  
  # NP weight fraction 
  set wnp = 0.0

  # y0 for tau
  set y0 = 75

  # x0 for tau
  set x0 = 0.2369

  # parameter a in tauHat
  set a_t = -48.23

  # parameter b in tauHat
  set b_t = 0.06786
end


subsection Nonlinear solver
  # Number of Newton-Raphson iterations allowed
  set Max iterations Newton-Raphson = 100

  # Displacement error tolerance
  set Tolerance displacement        = 1.0e-3

  # Force residual tolerance
  set Tolerance force               = 1.0e-3
end


subsection Time
  # End time
  set End time       = 1451

  # Time step size (this is actually updated and we controll delta u to keep it constant instead of delta t)
  set Time step size = 0.5

  set Time step size 2 = 1.0

  # At which timestep change to ML (set 0 if only ML) (max integer is 2147483647)
  set At which timestep switch to ML ? = 2147483646

  #Delta u
  set Delta de     = 5e-4

  #Load rate
  set load_rate     = 0.0165

  # Change timestep at this timestep
  set reduce_at_timestep = 2147483646

  # Set how much to reduce timestep 
  set reduce_timestep = 0.1
end

subsection Output parameters
  # Output data every given time step number for Paraview output files
  set Time step number output = 1
  
  # For "solution" file output data associated with integration point values averaged on:  elements | nodes
  set Averaged results           = nodes
end

References

For more informations, refer to our paper:

Paper

article{bahtiri2023machine,
  title={A machine learning-based viscoelastic--viscoplastic model for epoxy nanocomposites with moisture content},
  author={Bahtiri, Betim and Arash, Behrouz and Scheffler, Sven and Jux, Maximilian and Rolfes, Raimund},
  journal={Computer Methods in Applied Mechanics and Engineering},
  volume={415},
  pages={116293},
  year={2023},
  publisher={Elsevier}
}

About

A finite element implementation of a viscoelastic viscoplastic constitutive model using the deal.ii library with the option to include a pretrained Deep-Learning model

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published