Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Non-equilibrium initial state variables in SmallDeformation process. #2501

Merged
merged 6 commits into from May 27, 2019

Conversation

@endJunction
Copy link
Member

commented May 20, 2019

Adds a possibility of non-equilibrium initial state in the small deformation process.

Two new methods for the finite element creation and coordinates interpolation added for convenience.

  1. Feature description was added to the changelog
  2. Tests covering your feature were added?
  3. Any new feature or behavior change was documented? (pdf in the Tests/Data together with the project files.)

@endJunction endJunction force-pushed the endJunction:ReferenceState branch from 4af5b28 to 669fa07 May 21, 2019

@codecov

This comment has been minimized.

Copy link

commented May 21, 2019

Codecov Report

Merging #2501 into master will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master    #2501   +/-   ##
=======================================
  Coverage   31.75%   31.75%           
=======================================
  Files         571      571           
  Lines       21533    21533           
  Branches    10211    10211           
=======================================
  Hits         6837     6837           
  Misses      11185    11185           
  Partials     3511     3511

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b0d1463...0f5109a. Read the comment docs.

@endJunction endJunction force-pushed the endJunction:ReferenceState branch from 669fa07 to c42e91f May 22, 2019

@endJunction endJunction changed the title Reference state Non-equilibrium initial state variables in SmallDeformation process. May 22, 2019

@endJunction endJunction requested a review from wenqing May 22, 2019

@endJunction endJunction force-pushed the endJunction:ReferenceState branch from c42e91f to caa586b May 22, 2019

SmallDeformationProcessData<DisplacementDim> process_data{
materialIDs(mesh), std::move(solid_constitutive_relations),
solid_density, specific_body_force, reference_temperature};
materialIDs(mesh), std::move(solid_constitutive_relations),

This comment has been minimized.

Copy link
@TomFischer

TomFischer May 23, 2019

Member

Is this clang formatted?

@TomFischer
Copy link
Member

left a comment

Checked the code technical. Except the format issue:

@@ -272,6 +296,24 @@ class SmallDeformationLocalAssembler
auto const& b = _process_data.specific_body_force;
local_b.noalias() -=
(B.transpose() * sigma - N_u_op.transpose() * rho * b) * w;
if (_process_data.nonequilibrium_sigma)
{

This comment has been minimized.

Copy link
@TomFischer

TomFischer May 23, 2019

Member

Possible code duplication?

This comment has been minimized.

Copy link
@endJunction

endJunction May 24, 2019

Author Member

Yes. Removing, and as suggested by @wenqing storing in the ip_data.

{
nonequilibrium_sigma = &ParameterLib::findParameter<double>(
*nonequilibrium_state_variables_config,
//! \ogs_file_param_special{prj__processes__process__SMALL_DEFORMATION__nonequilibrium_state_variables__sigma}

This comment has been minimized.

Copy link
@wenqing

wenqing May 23, 2019

Member

Not for this PR: I think it is better to use the variable name instead of the symbol name of variable, e.g sigma to stress, for input data in the project file.

This comment has been minimized.

Copy link
@wenqing

wenqing May 23, 2019

Member

if (nonequilibrium_state_variables_config), set body force=zero.

MathLib::KelvinVector::KelvinVectorDimensions<
DisplacementDim>::value,
1);
ip_data.sigma = sigma_ref;

This comment has been minimized.

Copy link
@wenqing

wenqing May 23, 2019

Member

I think that sigma_ref can computed once at here and store it to ip_data.

This comment has been minimized.

Copy link
@wenqing

wenqing May 23, 2019

Member

initial_sigma or initial_stress could be a proper name.

@@ -272,6 +296,24 @@ class SmallDeformationLocalAssembler
auto const& b = _process_data.specific_body_force;
local_b.noalias() -=
(B.transpose() * sigma - N_u_op.transpose() * rho * b) * w;
if (_process_data.nonequilibrium_sigma)
{
x_position.setCoordinates(MathLib::Point3d(

This comment has been minimized.

Copy link
@wenqing

wenqing May 23, 2019

Member

Here I think sigma_ref can be directly fetched from ip_data if it keeps sigma_ref.

@norihiro-w

This comment has been minimized.

Copy link
Collaborator

commented May 23, 2019

perhaps you also need to include reference traction force, ie, neumann bc.

@wenqing

This comment has been minimized.

Copy link
Member

commented May 23, 2019

@norihiro-w Good idea!. Since this gives a non-equilibrium initial state, I think, only a reference of body force has to be excluded. The traction bc can be considered in the project file directly.

@wenqing

This comment has been minimized.

Copy link
Member

commented May 23, 2019

@norihiro-w The reference body force can be also excluded from the input data, e.g, if no change in body force, set 0 in <specific_body_force>, otherwise, give the increment value.

@norihiro-w

This comment has been minimized.

Copy link
Collaborator

commented May 23, 2019

@wenqing though I'm not checking the implementation, i guess here you want to solve the volume integration of \nabla \cdot (stress - stress_ref) + (b-b_ref) = 0 (if i'm wrong, please correct it). Then., in addition to stress_ref, you need to set b_ref (i forgot about this in previous comment) and boundary integrals of stress_ref which is the traction force (Nuemann bc). Of course, if b=b_ref (e.g. no density changes) or 't=t_ref'(e.g. constant crustal stress), you can simply set 'b=0' or 't=0' in the input file. However, I find the approach implicit and actual model setup becomes unclear for users.

@wenqing

This comment has been minimized.

Copy link
Member

commented May 24, 2019

@norihiro-w I think that you are right that this PR is aimed to solve \nabla \cdot (stress - stress_ref) + (b-b_ref) = 0. Where non-equilibrium means that the given reference stress and the reference body force do not need to satisfy the momentum balance equation strictly, and they should be excluded in displacement change. Therefore the raised traction BC of (stress - stress_ref) \cdot n can be configured in the project file directly. Of course, the stress associated material parameters must be calculated by using the value of 'stress'. You know well that in some cases of geo-engineering application only measured normal stresses are available, which may does not strictly satisfy \nabla \cdot stress_ref + b_ref = 0, and one only can or want to obtain the displacement from the initial status (0).

@wenqing

This comment has been minimized.

Copy link
Member

commented May 24, 2019

I think to add an explanation in the document about how to set body force and traction BC under the nonequilibrium condition is better than to change the corresponding source code. Because this can explicitly remind one the balance equation \nabla \cdot (stress - stress_ref) + (b-b_ref) = 0. This is just my opinion.

@endJunction

This comment has been minimized.

Copy link
Member Author

commented May 27, 2019

@norihiro-w We have mentioned some points in the pdf (see the test case folder). Especially the handling of the body-force term when density is not constant. We might miss some points and can improve the code when the need arises.
For this PR the density in the small deformation process is constant.

@endJunction endJunction force-pushed the endJunction:ReferenceState branch from 3651f82 to 0f5109a May 27, 2019

@endJunction endJunction merged commit 3f6133c into ufz:master May 27, 2019

3 checks passed

continuous-integration/jenkins/pr-merge This commit looks good
Details
deploy/netlify Deploy preview ready!
Details
ufz.ogs #20190527.2 succeeded
Details

@endJunction endJunction deleted the endJunction:ReferenceState branch May 27, 2019

@endJunction endJunction referenced this pull request Jul 9, 2019
3 of 3 tasks complete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.