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

Orthotropic elasticity #2428

Merged
merged 7 commits into from Apr 16, 2019
Merged

Conversation

endJunction
Copy link
Member

@endJunction endJunction commented Mar 15, 2019

Use local coordinate system for the coordinate transformations. If no coordinate system is provided, the usual cartesian coordinate system is assumed.

Only 3D case is implemented and rudimentary tested in this PR.
Another unfortunate thing is that the local coordinate system must be passed through the process' interfaces to the solid material creation. This can be resolved by creating the materials independent of the process; definitely not this PR.

Commit-wise review is easier, I think.

Changelog updated.


// Rotate the forth-order tenser in Kelvin mapping with Q*C_ortho*Q^T.
// Transposition of Q is omitted, because Q is symmetric.
return Q * C_ortho * Q;
Copy link
Member

@nagelt nagelt Mar 16, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

at this stage, i.e. after back-rotation, you can toss out the last two columns & rows in the 2D/AXI calculations ... then we have made no further assumption on coordinate systems.
So Q and S would remain 6D, and you return the block (Q S_inv Q)<4,4>

Alternative is to always have 3 coincide with z, for example ..

@codecov
Copy link

codecov bot commented Mar 16, 2019

Codecov Report

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

Impacted file tree graph

@@          Coverage Diff           @@
##           master   #2428   +/-   ##
======================================
  Coverage    32.1%   32.1%           
======================================
  Files         554     554           
  Lines       20740   20740           
  Branches     9893    9893           
======================================
  Hits         6659    6659           
  Misses      10572   10572           
  Partials     3509    3509

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 03c2522...5f61d60. Read the comment docs.

@@ -0,0 +1,2 @@
Three Poisson's ratios \f$\nu_{12}\f$, \f$\nu_{23}\f$, and \f$\nu_{13}\f$ in
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is better to add the following explantation:

Note: \f$\nu_{21}\f$, \f$\nu_{32}\f$, and \f$\nu_{31}\f$ are calculated by the symmetry property as
\f$\nv_{21}E_1=\nv_{12}E_2\f$, \f$\nv_{32}E_2=\nv_{23}E_3\f$, and \f$\nv_{31}E_1=\nv_{13}E_3\f$ 

//! \ogs_file_param_special{material__solid__constitutive_relation__LinearElasticOrthotropic__poissons_ratios}
config, "poissons_ratios", parameters, DisplacementDim);
DBUG("Use '%s' as poissons_ratios parameter.", shear_moduli.name.c_str());

Copy link
Contributor

@ThieJan ThieJan Mar 21, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be poissons_ratios.name.c_str() here

@ThieJan
Copy link
Contributor

ThieJan commented Mar 21, 2019

I have been testing it with one of the Benchmarks in the 2018 book. Without setting of local coordinate system the benchmark looks fine. I will add it soon to the test set.

Switching the canonical directions to incorporate the local coordinate system gives unexpected results. For example I changed the test in this PR only by setting

...
    <local_coordinate_system>
        <basis_vector_0>e2</basis_vector_0>
        <basis_vector_1>e0</basis_vector_1>
        <basis_vector_2>e1</basis_vector_2>
    </local_coordinate_system>
...

and displayed the elasticity tensor C in SmallDeformationFEM.h:271. The output is

0.234279 0.320592   1.1344        0        0        0
0.591862   0.2836 0.234279        0        0        0
  0.2836  1.17756 0.320592        0        0        0
       0        0        0        0        0        2
       0        0        0        2        0        0
       0        0        0        0        2        0

I think it should be at least symmetric?

@endJunction
Copy link
Member Author

endJunction commented Mar 21, 2019

@ThieJan Thanks! It's an error in my code. Pushing fixed implementation with the original test now extended to coordinate permutations (xyz -> yzx -> zxy) and updated Poissons ratios and Young's moduli.

Keeping 'WIP' tag until first non-trivial example with skewed coordinate system is running.

@endJunction endJunction force-pushed the OrthotropicElasticity branch 2 times, most recently from a50a7bf to 5381eec Compare March 22, 2019 17:23
Copy link
Member

@TomFischer TomFischer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The source code looks reasonable. Didn't check the tests. ⏩

@ThieJan
Copy link
Contributor

ThieJan commented Apr 2, 2019

I succesfully checked the current implementation with two examples of transversal anisotropy from the 2018 benchmark book.

You could merge them from my copy of this branch: https://github.com/ThieJan/ogs/tree/OrthotropicElasticity

One of the variations uses coordinate vector permutation while the other is rotated by a non trivial transformation. All four are checked against the analytical solutions presented in the book. So far, documentation for the web page is missing.

Writing the project file, I came up with a feature request ;-) It would be nice to add a possible input for transversal anisotropy to the project file. I found the parametrization of the full orthotropc elasticity tensor sufficiently error prone to add a tested project file interface for the current implemenation.

@endJunction
Copy link
Member Author

All tests included, and code rebased.

@endJunction endJunction force-pushed the OrthotropicElasticity branch 2 times, most recently from f237676 to 3198160 Compare April 15, 2019 15:31
Add verification examples for transversal anisotropy from Vogel/Massmann
in 2 versions each.
@endJunction endJunction force-pushed the OrthotropicElasticity branch 2 times, most recently from 6d233c2 to c3265ee Compare April 16, 2019 08:56
Also update the references, where especially sigma
deviates very much.
@endJunction endJunction merged commit 4532ec0 into ufz:master Apr 16, 2019
@endJunction endJunction deleted the OrthotropicElasticity branch April 16, 2019 14:02
@ogsbot
Copy link
Member

ogsbot commented Jun 19, 2020

OpenGeoSys development has been moved to GitLab.

See this pull request on GitLab.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
6 participants