ajacquey / golem Goto Github PK
View Code? Open in Web Editor NEWGOLEM is a numerical simulator for modelling coupled Thermo-Hydro-Mechanical processes in faulted geothermal reservoirs.
License: GNU General Public License v3.0
GOLEM is a numerical simulator for modelling coupled Thermo-Hydro-Mechanical processes in faulted geothermal reservoirs.
License: GNU General Public License v3.0
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
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 ?
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
/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
.As outlined in idaholab/moose#24499 the THM_doublet
test is failing with new MOOSE.
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?
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....
Here is a list of improvements - new features which could the topic of a new GOLEM release version:
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:
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.
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"
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.
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
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....
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.