where the epsilon is the small elastic strain defined as epsilon=(\nabla u+u\nabla^T)/2, c is the concentration.
For the diffusion problem, its governing equation looks like:
Now, I can use the TensorMechanics module for the first equation, and then define the strain depend on C. For the diffusion problem, I used a AuxKernel to compute the hydrostatic stress and use it as a coupled variable for the diffusion equaiton. Here is my input file:
******************************************
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = false
[../]
[./ctime]
type = TimeDerivative
variable = c
[../]
[./diff]
type = ExampleC
variable =c
D = 0.1
couple_stress = hystress
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e0
poissons_ratio = 0.3
use_displaced_mesh = false
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y'
eigenstrain_names = eigen_c
[../]
[./eigen_strain]
type = ComputeVariableEigenstrain
args = c
eigen_base = '1 1 1 0 0 0'
eigenstrain_name = eigen_c
outputs = exodus
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[AuxVariables]
[./hystress]
family = MONOMIAL
order = FIRST
[../]
[]
[AuxKernels]
[./gethystress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hystress
scalar_type = Hydrostatic
[../]
[]
***************************************
In the [Materials] block, I tried to calculate the strain based on c(use the ComputeVariableEigenstrain), but this is just like one way coupling right? No contribution for K_{uc} ?
I think the final system matrix should be like the following right?
So I'm wondering:
1. TensorMechanic module is really powerful, so I want to use it for the elastic part, let's say the K_{uu} , then for the coupling part, is it possible that
I create a C++ class and inherit from TensorMechanics, and override the computeQpOffDiagnoalJacobian() function, then I can do the computation for K{uc}?
I tried to #include "TensorMechaincs.h", but it seems I go to the wrong direction.
maybe there should have another better solutions for such kind problems.
2. For the diffusion part, K_{cc} is ok, very easy to implemenet. But for the K_{cu} part, since there the u is a vector, so inside the computeQpOffDiagnalJacobian function
we should give
if (jvar==_couple_sigma_var)
{
K_{cu}=(dR_{c}/dSigma)*(dSigma/du)
}
this makes me confused, if we do the assemble things one by one, the K_{cu} term should take two positions right?
3. Is there any other examples or solutions for such TensorMechanics based coupling problem? Any helpful suggestion is welcome!
Thank you all.
Best regards
--
You received this message because you are subscribed to the Google Groups "moose-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to moose-users...@googlegroups.com.
Visit this group at https://groups.google.com/group/moose-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/moose-users/6ee62f68-f840-479c-8c19-8deb045c06fc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
c_ref does not seem to appear in your moose model. ComputeVariableEigenstrain requires a DerivativeParsedMaterial 'prefactor' argument! (that material would implement the c- c_ref term).