Coder Social home page Coder Social logo

ajacquey / golem Goto Github PK

View Code? Open in Web Editor NEW
35.0 14.0 26.0 20.91 MB

GOLEM is a numerical simulator for modelling coupled Thermo-Hydro-Mechanical processes in faulted geothermal reservoirs.

License: GNU General Public License v3.0

Makefile 0.66% C++ 78.60% Python 0.07% Shell 0.15% C 0.03% GLSL 1.55% Assembly 6.62% SWIG 12.33%
golem geothermal-reservoirs moose-framework

golem's Introduction

golem's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

golem's Issues

various small issues after git-clone, compile, run tests

After the Dep.6.4 seminar talk (awesome but overwhelming) I've installed Moose and Golem on my PC. Didn't know anything about Moose and Golem until then. I did the following because I just like to try things out. Maybe you like to get feedback from first-time users.

Now I have a working Moose installation on my Linux PC, ubuntu 16.04 with 4 CPUs and 24 GB RAM, kernel 4.4.0-137-generic #163-Ubuntu SMP Mon Sep 24 13:14:43 UTC 2018 x86_64

Moose master branch, commit 56178d8, from 2018-10-16

test/run_tests
Ran 1735 tests in 258.1 seconds.
1735 passed, 73 skipped, 0 pending, 0 failed

Various issues

  1. From Golem's test suite all tests passed but 1 test failed:
test:TH.2D_transient ............................................................. [FINISHED] FAILED (EXODIFF)
--------------------------------------------------------------------------------------------------------------
Ran 44 tests in 160.8 seconds.
43 passed, 0 skipped, 0 pending, 1 FAILED

Details:

test:TH.2D_transient: ERROR: 
test:TH.2D_transient:    *****************************************************************
test:TH.2D_transient:               EXODIFF	(Version: 2.90) Modified: 2018-02-15
test:TH.2D_transient:               Authors:  Richard Drake, [email protected]           
test:TH.2D_transient:                         Greg Sjaardema, [email protected]          
test:TH.2D_transient:               Run on    2018/10/18   13:13:24 CEST
test:TH.2D_transient:    *****************************************************************
test:TH.2D_transient: 
test:TH.2D_transient: Reading first file ... 
test:TH.2D_transient: Reading second file ... 
test:TH.2D_transient:   FILE 1: /home/knb/code/git/projects/Golem/test/tests/TH/gold/TH_2D_transient_out.e
test:TH.2D_transient:    Title: TH_2D_transient_out.e
test:TH.2D_transient:           Dim = 3, Blocks = 1, Nodes = 9882, Elements = 4800, Nodesets = 6, Sidesets = 6
test:TH.2D_transient:           Vars: Global = 0, Nodal = 2, Element = 3, Nodeset = 0, Sideset = 0, Times = 3
test:TH.2D_transient: 
test:TH.2D_transient:   FILE 2: /home/knb/code/git/projects/Golem/test/tests/TH/TH_2D_transient_out.e
test:TH.2D_transient:    Title: TH_2D_transient_out.e
test:TH.2D_transient:           Dim = 3, Blocks = 1, Nodes = 9882, Elements = 4800, Nodesets = 6, Sidesets = 6
test:TH.2D_transient:           Vars: Global = 0, Nodal = 2, Element = 3, Nodeset = 0, Sideset = 0, Times = 3
test:TH.2D_transient: 
test:TH.2D_transient: exodiff: INFO .. Map option is not needed.
test:TH.2D_transient: 
test:TH.2D_transient: Nodal coordinates will be compared .. tol:    1e-06 (absolute), floor:        0
test:TH.2D_transient: Time step values will be compared .. tol:  5.5e-06 (relative), floor:    1e-10
test:TH.2D_transient: No Global variables on either file.
test:TH.2D_transient: Nodal variables to be compared:
test:TH.2D_transient: 	pore_pressure                    tol:  5.5e-06 (relative), floor:    1e-10
test:TH.2D_transient: 	temperature                            5.5e-06 (relative),           1e-10
test:TH.2D_transient: Element variables to be compared:
test:TH.2D_transient: 	vx                               tol:  5.5e-06 (relative), floor:    1e-10
test:TH.2D_transient: 	vy                                     5.5e-06 (relative),           1e-10
test:TH.2D_transient: 	vz                                     5.5e-06 (relative),           1e-10
test:TH.2D_transient: No Element Attribute variables on either file.
test:TH.2D_transient: No Nodeset variables on either file.
test:TH.2D_transient: No Sideset variables on either file.
test:TH.2D_transient: Sideset Distribution Factors will be compared .. tol:    1e-06 (relative), floor:        0
test:TH.2D_transient: 
test:TH.2D_transient:   ==============================================================
test:TH.2D_transient:   NOTE: All node and element ids are reported as global ids.
test:TH.2D_transient: 
test:TH.2D_transient: Sideset Distribution Factors:
test:TH.2D_transient:   --------- Time step 1, 0.0000000e+00 ~ 0.0000000e+00, rel diff:  0.00000e+00 ---------
test:TH.2D_transient: Nodal variables:
test:TH.2D_transient: Element variables:
test:TH.2D_transient:   --------- Time step 2, 3.5000000e+03 ~ 3.5000000e+03, rel diff:  0.00000e+00 ---------
test:TH.2D_transient: Nodal variables:
test:TH.2D_transient:    temperature    rel diff: -1.6335222e-03 ~ -1.6334518e-03 = 4.31226e-05 (node 9882)
test:TH.2D_transient: Element variables:
test:TH.2D_transient:   --------- Time step 3, 7.0000000e+03 ~ 7.0000000e+03, rel diff:  0.00000e+00 ---------
test:TH.2D_transient: Nodal variables:
test:TH.2D_transient:    temperature    rel diff: -4.8462806e-03 ~ -4.8462504e-03 = 6.23805e-06 (node 9882)
test:TH.2D_transient: Element variables:
test:TH.2D_transient: 
test:TH.2D_transient: exodiff: Files are different
test:TH.2D_transient: 
test:TH.2D_transient:  
test:TH.2D_transient: ################################################################################
test:TH.2D_transient: Tester failed, reason: EXODIFF
test:TH.2D_transient: 

I tried this twice. I don't know what's wrong here, and I won't investigate. This is not my expertise.
Maybe you should write a small paragraph telling the user how serious this is if 1 test fails. Maybe it's just a false alarm here (tiny temperature differences) and you can change some tolerance value(s) or acceptance criteria here ?

  1. Moreover your paper says:

The source code and the input files of
the five numerical examples presented in this paper, plus a suite
of specific benchmark cases, are available for downloading from a
GitHub repository (https://github.com/ajacquey/Golem).

but there seems to be no such folder /examples/ (or similar) in the github repo. I haveb't really looked, and I don't care, and I don't need the examples, but maybe someone else will notice. I think a dummy paragraph /"coming soon" will suffice

  1. Maybe this is a moose issue, but still:
    I think it is appropriate to inform the user that the Moose installer alters the PATH variable. Moose brings its own python (Python 2.7.15 :: Anaconda, Inc. in /opt/moose/miniconda/bin), so many Python scripts or Python-based binaries (e.g. "diffuse" editor) that rely on the system's Python will cease to work when called from a bash shell. I had to change the PATH back to the old value by removing /opt/moose/miniconda/bin.

Is there manual or uerguide for golem?

it is a good tool for geothermal reservoir smulation. Is there any user guide for golem? I wonder what's the mesh generation tool for the multi fracture example running?

Failed to build Golem

I am new to Moose Golem and tried to compile it after successfully installing ad testing the Moose framework without any errors. Following the instructions on the README, I get the following while trying to build. I am running it on Ubuntu subsystem (20.04 LTS) within Windows 10.

(moose) vi65zebe@DESKTOP-9LJ6NCG:~/projects/golem$ make -j 4
Checking if header needs updating: /home/vi65zebe/projects/moose/framework/include/base/MooseRevision.h...
Rebuilding symlinks in /home/vi65zebe/projects/golem/build/header_symlinks
Creating Unity Directory /home/vi65zebe/projects/golem/build/unity_src
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/src/base/GolemApp.C...
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/src/main.C...
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/test/src/base/GolemTestApp.C...
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/auxkernels_Unity.C
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/kernels_Unity.C
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/controls_Unity.C
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/actions_Unity.C
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/bcs_Unity.C
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/utils_Unity.C
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/userobjects_Unity.C
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/functions_Unity.C
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/dirackernels_Unity.C
Creating Unity /home/vi65zebe/projects/golem/build/unity_src/materials_Unity.C
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/build/unity_src/auxkernels_Unity.C...
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/build/unity_src/kernels_Unity.C...
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/build/unity_src/controls_Unity.C...
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/build/unity_src/actions_Unity.C...
In file included from /home/vi65zebe/projects/golem/build/unity_src/kernels_Unity.C:7:
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C: In member function 'virtual void GolemKernelM::computeFiniteDeformJacobian()':
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:194:36: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
194 | const RankFourTensor II_ijkl = I.mixedProductIkJl(I);
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:207:9: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
207 | I.mixedProductIkJl(rot_times_stress) + I.mixedProductJkIl(rot_times_stress);
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:207:48: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductJkIl'; did you mean 'mixedProductJkI'?
207 | I.mixedProductIkJl(rot_times_stress) + I.mixedProductJkIl(rot_times_stress);
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:209:35: error: 'MooseADWrapper<RankTwoTensorTempl, false>' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
209 | (_rotation_increment)[_qp].mixedProductIkJl((_rotation_increment)[_qp]);
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:210:45: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
210 | const RankFourTensor drot_dUhatinv = Fhat.mixedProductIkJl(I);
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:217:10: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
217 | -I.mixedProductIkJl(A) - I.mixedProductJkIl(A) + II_ijkl + I.mixedProductJkIl(I);
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:217:34: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductJkIl'; did you mean 'mixedProductJkI'?
217 | -I.mixedProductIkJl(A) - I.mixedProductJkIl(A) + II_ijkl + I.mixedProductJkIl(I);
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:217:68: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductJkIl'; did you mean 'mixedProductJkI'?
217 | -I.mixedProductIkJl(A) - I.mixedProductJkIl(A) + II_ijkl + I.mixedProductJkIl(I);
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:223:38: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
223 | 0.5 * II_ijkl - 1.0 / 8.0 * (I.mixedProductIkJl(Ctilde) + Ctilde.mixedProductIkJl(I));
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:223:72: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
223 | 0.5 * II_ijkl - 1.0 / 8.0 * (I.mixedProductIkJl(Ctilde) + Ctilde.mixedProductIkJl(I));
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:226:25: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
226 | drot_dFhatinv -= Fhat.mixedProductIkJl((*_rotation_increment)[_qp].transpose());
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:230:34: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
230 | -0.5 * II_ijkl + 0.25 * (I.mixedProductIkJl(Ctilde) + Ctilde.mixedProductIkJl(I));
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:230:68: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
230 | -0.5 * II_ijkl + 0.25 * (I.mixedProductIkJl(Ctilde) + Ctilde.mixedProductIkJl(I));
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:233:40: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductJkIl'; did you mean 'mixedProductJkI'?
233 | _finite_deform_jacobian[_qp] += Fhat.mixedProductJkIl(_stress[_qp]);
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:235:47: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
235 | const RankFourTensor dFhat_dFhatinv = -Fhat.mixedProductIkJl(Fhat.transpose());
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
/home/vi65zebe/projects/golem/src/kernels/GolemKernelM.C:243:51: error: 'const RankTwoTensor' {aka 'const class RankTwoTensorTempl'} has no member named 'mixedProductIkJl'; did you mean 'mixedProductJkI'?
243 | const RankFourTensor dFhatinv_dGradu = -Fhatinv.mixedProductIkJl(Finv.transpose());
| ^~~~~~~~~~~~~~~~
| mixedProductJkI
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/build/unity_src/bcs_Unity.C...
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/build/unity_src/utils_Unity.C...
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/build/unity_src/userobjects_Unity.C...
Compiling C++ (in opt mode) /home/vi65zebe/projects/golem/build/unity_src/functions_Unity.C...
make: *** [/home/vi65zebe/projects/moose/framework/build.mk:144: /home/vi65zebe/projects/golem/build/unity_src/kernels_Unity.x86_64-conda-linux-gnu.opt.lo] Error 1
make: *** Waiting for unfinished jobs....


New version of GOLEM

Here is a list of improvements - new features which could the topic of a new GOLEM release version:

  • Improve memory usage for the mechanics
  • Direct solve for the plastic update
  • Direct solve for Maxwell viscoelasticity
  • Advection based on the entropy-production viscosity formulation
  • Aperture update based on normal and shear stress on fault plane (Hannes)
  • Reorganization of the materials
  • Use automatic differentiation

GolemPressureAction crashing on GLIC

Guido reported that the GolemPressureAction is not working on GLIC and working fine on desktop computer.

When running simulation using GolemPressureAction on GLIC, the simulation crashes with the following error:


mpirun has exited due to process rank 6 with PID 145868 on
node node189 exiting improperly. There are three reasons this could occur:

  1. this process did not call "init" before exiting, but others in
    the job did. This can cause a job to hang indefinitely while it waits
    for all processes to call "init". By rule, if one process calls "init",
    then ALL processes must call "init" prior to termination.

  2. this process called "init", but exited without calling "finalize".
    By rule, all processes that call "init" MUST call "finalize" prior to
    exiting or it will be considered an "abnormal termination"

  3. this process called "MPI_Abort" or "orte_abort" and the mca parameter
    orte_create_session_dirs is set to false. In this case, the run-time cannot
    detect that the abort call was an abnormal termination. Hence, the only
    error message you will receive is this one.

This may have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).

You can avoid this message by specifying -quiet on the mpirun command line.

[node189:145859] mca: base: component_find: unable to open /opt/mpi/gcc/openmpi-1.8.8/lib/openmpi/mca_mtl_psm: libpsm_infinipath.so.1: cannot open shared object file: No such file or directory (ignored)


Need to investigate if it's related to GLIC installation or code of GolemPressureAction.

Example case with fracture

Hi,

Thanks for your nice code !

I'd like to reproduce the simulations in the paper below:

Cacace, M. and Jacquey, A. B.: Flexible parallel implicit modelling of coupled thermal–hydraulic–mechanical processes in fractured rocks, Solid Earth, 8, 921-941, https://doi.org/10.5194/se-8-921-2017, 2017.

However, I didn't find any example input files that including fracture, wellbore and model.

Is that possible to share the example file that can help us to learn the GOLEM?

Bin Wang
PhD Student
Craft & Hawkins Department of Petroleum Engineering
Louisiana State University

Installation Error with current Moose Version

I tried to compile Golem with a fresh Moose installation and got the following error:

In file included from /home/hombre/projects/Golem/build/unity_src/auxkernels_Unity.C:3:
/home/hombre/projects/Golem/src/auxkernels/GolemEqvInelasticStrain.C: In member function 'virtual libMesh::Real GolemEqvInelasticStrain::computeValue()':
/home/hombre/projects/Golem/src/auxkernels/GolemEqvInelasticStrain.C:44:10: error: '_u_old' was not declared in this scope; did you mean '_dt_old'?
44 | return _u_old[_qp] + std::sqrt(2.0 / 3.0) * inelastic_strain_increment.L2norm();
| ^~~~~~
| _dt_old
In file included from /home/hombre/projects/Golem/build/unity_src/auxkernels_Unity.C:7:
/home/hombre/projects/Golem/src/auxkernels/GolemThermalStress.C: In member function 'virtual libMesh::Real GolemThermalStress::computeValue()':
/home/hombre/projects/Golem/src/auxkernels/GolemThermalStress.C:52:10: error: '_u_old' was not declared in this scope; did you mean '_dt_old'?
52 | return _u_old[_qp] + dstressT(_i, _i);
| ^~~~~~
| _dt_old
/home/hombre/projects/moose/framework/build.mk:118: recipe for target '/home/hombre/projects/Golem/build/unity_src/auxkernels_Unity.x86_64-conda-linux-gnu.opt.lo' failed
make: *** [/home/hombre/projects/Golem/build/unity_src/auxkernels_Unity.x86_64-conda-linux-gnu.opt.lo] Error 1
make: *** Waiting for unfinished jobs....

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.