Giter Club home page Giter Club logo

falcon's Introduction

FALCON

FALCON is a finite-element geothermal reservoir simulation and analysis code for coupled and fully implicit Thermo-Hydro-Mechanical-Chemical (THMC) geosystems based on the MOOSE framework mainly developed by Idaho National Laboratory. It solves the coupled governing equations for fluid flow, heat transfer, rock deformation and fracturing, and chemical reactions in geological porous media. Due to the flexibility in the virtual abstract physics and transport interfaces, FALCON is highly extensible and can accommodate both multi-species and multi-phase formulations.

FALCON Website

Please visit the FALCON Website for information on installation, use, or contributing to FALCON.

Citing FALCON

Podgorney R., Finnila, A., Simmons, S., and McLennan, J. (2021). A Reference Thermal-Hydrologic-Mechanical Native State Model of the Utah FORGE Enhanced Geothermal Site. Energies, 14(16):4758. https://doi.org/10.3390/en14164758

falcon's People

Contributors

aeslaughter avatar ahmedalmetwally avatar andrsd avatar brianmoose avatar bwspenc avatar cpgr avatar crswong888 avatar cticenhour avatar dschwen avatar friedmud avatar giudgiud avatar huangh-inl avatar jasondhales avatar jbradford12 avatar jonghyunharrylee avatar joshuahansel avatar jtbrad avatar jwpeterson avatar lindsayad avatar loganharbour avatar lynnmunday avatar maxnezdyur avatar mengnanli91 avatar milljm avatar permcody avatar rpodgorney avatar rwcarlsen avatar sapitts avatar wjin33 avatar yidongxiainl avatar

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

Watchers

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

falcon's Issues

Get Mandel Poromechanics Problem to Work With a MultiAPP

We need fixedStress version of the Mandel problem "moose/modules/porous_flow/test/tests/poro_elasticity/mandel.i".
We will do this using the MultiApp system where the main will be the tensorMechanics driver and the porousFlow will be the subApp.

Removing unused parameters from tests.

Bug Description

Due to new changes in the way moose handles default behavior for unused parameters, multiple tests are now hitting errors for their unused parameters. There are only a handful but they must be addressed before the PR for MOOSE can succeed.

Steps to Reproduce

The specific input files are viewable in the attached MR, and can be seen on the civet job here: https://civet.inl.gov/job/1077111/

Impact

The Moose update will not be mergeable until this change is made, so it is of a high importance. Removing the tests should have little impact but should be verified by this repo's developers.

Some tests failing in parallel

I'm not sure I understand the physics well enough to try and fix it myself, but I have identified 4 tests that lead to an EXODIFF failure when running with MPI:

PT_T_convection.PT_T_convection ........................................................ FAILED (EXODIFF)
PT_T_convection.PT_T_convection_SUPG ................................................... FAILED (EXODIFF)
PT_T_convection.PT_T_convection_SUPG_gaussian .......................................... FAILED (EXODIFF)
PT_T_SideProductionIntegral.PT_T_SideProductionIntegral ................................ FAILED (EXODIFF)

These tests pass in serial, i.e., when running with ./run_tests -j4, but not if you run with ./run_tests -j4 -p2, which is equivalent to executing each individual test with the mpiexec -n 2 command.

An additional test fails when multithreading. Running ./run_tests -j4 -p2 --n-threads=2 leads to the following results:

PT_T_convection.PT_T_convection ........................................................ FAILED (EXODIFF)
PT_T_convection.PT_T_convection_gaussian ............................................... FAILED (EXODIFF)
PT_T_convection.PT_T_convection_SUPG ................................................... FAILED (EXODIFF)
PT_T_convection.PT_T_convection_SUPG_gaussian .......................................... FAILED (EXODIFF)
PT_T_SideProductionIntegral.PT_T_SideProductionIntegral ................................ FAILED (EXODIFF)

Initialize Documentation

The objective is to develop a website for the Falcon application using the MooseDocs Python module. We shall begin by setting up the basic configuration for the various Docs extensions, e.g., Content, Navigation (including the mega menu), Appsyntax, BibTex, SQA, etc., and later we can start to develop the homepage and the site map. A completed configuration will be such that developers can begin to add the general and body documentation using MooseDown (.md).

@rpodgorney @aeslaughter

Clone Falcon

Dear Sir,

I am a very new one use Moose framework and falcon. I clone Falcon by writing the command:
$ cd ~/projects
$ git clone [email protected]:idaholab/falcon.git

However, there has this notice:
Cloning into 'falcon'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Could you show me what it was happened and how to solve it?
Thank you so much!
Camlai.

Make dbg tests pass

Currently, a few tests are too long for debug:

test:THM_injection.transient_run ...................................................... [FINISHED] OK [191.3s]
test:PT_T_convection.PT_T_convection_SUPG_Discontinuity_Capturing ....... [FINISHED] FAILED (TIMEOUT) [300.0s]

Skip these.

Provide material properties from database

Description

Given a group of scattered points in 3D space (usually provided from a database software package, e.g. RockWorks), a tetrahedral mesh (in the format of legacy ascii based VTK) that does not contain material properties can be generated in the toolkit TetGen. The scattered points are the exact mesh nodes. Material properties such as porosity or permeability are initially provided in the point data. What options are there for providing FALCON with the field material properties? Two approaches will be explored and examined.

Approach 1

Nodal material properties can be appended into the VTK mesh file. The VTK mesh file that contains the nodal material properties can be converted and output to Exodus-II format by using ParaView. The VTK mesh contains the boundary IDs for xmin, xmax, ymin, ymax, zmin, and zmax boundaries . So the final Exodus-II mesh will contain SideSet IDs. The limitation of this approach is that no additional operation is applicable to the Exodus-II mesh containing the nodal material data. Cubit does not read in the nodal attributes of material data.

Approach 2

Directly convert the VTK mesh to Exodus-II mesh without imbedding the nodal material properties. This can allow flexibility for any additional operation to the mesh in Cubit, e.g. assign new SideSet IDs. Nodal material data can be read separately into FALCON. This seems like a better solution to the needs.

Summary

The second approach, after implementation and testing, shows best flexibility. The detailed procedure is as blow:

  1. Given a group of scatterd nodes with nodal attributes "example.node", use TetGen to generate a tetrahedral mesh in the VTK-format "example.vtk". This VTK mesh does not retain the nodal attributes. So there needs a handy code (written in Python or whatever other programming language) to append the nodal attributes into the VTK mesh, and save the updated "example.vtk"

  2. Load the VTK mesh "example.vtk" (containing nodal attributes) in ParaView, and do save data in Exodus format "example.e". Notice that the nodes in the resulted Exodus mesh are reordered. Load "example.e" in ParaView, and do "save data" in CSV format "example.csv". In this way, the reordered list of nodal attributes is obtained and will be used to provide nodal attributes in a MOOSE-based app.

  3. "example.e" does not contain any side-set information. So if side-sets are needed for defining BCs in simulation, load "example.e" in Cubit, and assign side-sets. Do not forget to reset the type of element from "TETRA" to "TETRA4", and save the final "example.e"

Add DFN multiapp example with amr

Add an example that refines the mesh in the matrix around the discrete fracture network on the sub-app using AMR and the ReporterPointMarker for adaptivity

"Stochastic" capability

The capability to model the "stochastic" field is crude. It has to be able to read in external property distributions. Two things within material properties shall be made possible:

  1. Tensor based material properties, e.g., permeability.
  2. A general property reader as an option in the material kernel, i.e., flag = "default", read from input deck, flag = "external," read from external file

Mathematical model for THM_Steady problem

Dear all,

I am following the THM_Steady problem in FALCON. Could you please show me the Mathematical model or how to get the Mathematical model for this problem?

Thank you all!!

closest node point creator

it is hard to place a point directly onto a 2d mesh that is in 3d space due to numerical precision. We need to apply dirac kernels to these planes. We need a reporter that can create a point on these planes based on input coordinates. This point can then be passed to a dirac kernel.

add writeup to Gringarten multiapp example

This would be writing up the example sent by Koenradd Beckers using the discrete fracture network multiapp example. This is basically a cut and paste of his NREL memo.

Update module registration

Reason

FALCON requires an update to improve the robustness of the dynamic loading capability to use the new templated Modules registration.
Design

Templated module registration will guarantee uniqueness in the binary's symbols when using dlopen
Impact

No impact unless using dynamic loading capability.

Add optimization example for FORGE project

Add Falcon input file, python script, test, and markdown for Purdue_5-2557 project Year 1 case study document according to the project milestone 3.4.3. This example shows how to identify effective permeability and thermal conductivity parameters from sparse pressure, temperature, and displacement measurements. The measurements were generated from the Utah Forge native state model.

Modelling stress in cylindrical mesh

I currently use FALCON to simulate coupled THM in a cylindrical core with tetrahedral grids, as in the image below. The main challenge I face is modeling a constant normal stress on the curved surface area of the cylinder. The boundary conditions I have tried are outlined below. However, the last two (wall_x, wall_y) are the ones I am having a problem with. Based on the input script snippet below, it appears that FALCON applies the fixed stress magnitude and direction on all the nodes on the curved surface area. This results in the cylinder bending toward the positive x and positive y axes.

Is there a way to make the fixed stress on the curved surface area normal? That way, the stresses on the left of the curved area are balanced by equal and opposite stresses on the right side, etc.

I would greatly appreciate any help or example input files that show how to apply a normal stress on a curved surface in FALCON.
thumbnail_image

[BCs]

[./bottom_z]

type = DirichletBC

variable = disp_z

value = 0

boundary = 'bottom'

[../]

[./bottom_x]

type = DirichletBC

variable = disp_x

value = 0

boundary = 'bottom'

[../]

[./bottom_y]

type = DirichletBC

variable = disp_y

value = 0

boundary = 'bottom'

[../]

[./top_z]

type = NeumannBC

variable = disp_z

value = 8.6e6

boundary = 'top'

[../]

[./top_x]

type = DirichletBC

variable = disp_x

value = 0

boundary = 'top'

[../]

[./top_y]

type = DirichletBC

variable = disp_y

value = 0

boundary = 'top'

[../]

[./wall_x]

type = NeumannBC

variable = disp_x

value = 8.2e6

boundary = 'wall'

[../]

[./wall_y]

type = NeumannBC

variable = disp_y

value = 8.2e6

boundary = 'wall'

[../]

Add coverage configuration

Reason

A coverage configuration file in the repo will allow for the changing of coverage requirements from within a PR.

Design

Add a .coverage file to the root that defines the coverage requirements.

Impact

Simplifies changing coverage requirements and makes coverage requirements more transparent.

Enriched Galerkin Kernels

Add new diffusion kernels using enriched Galerkin with testing. Use the existing DG diffusion kernels as an example.

auxkernel to mark elements intersecting 2d mesh

Add an auxkernel that will find all of the 3d elements intersected by a 2d mesh. This auxkernel can then be used for refinement and used to scale material properties. This will allow us to refine a volumetric mesh around a 2D DFN mesh.

closestElemToLine reporter that can sample nodal variables

I need to sample nodal variable output at each element found by the closestElemToLine reporter.
Derive off closestElemToLine reporter and implement execute method that gets the average nodal variable value for each element found.

Implement and validate a new permeability function

Earl Mattson came up with a permeability function as a result of data-fitting:

k = k_0 * ( (a + c * sqrt(P/1E6) ) / ( 1 + d * sqrt(P/1E6) ) )^(2/3)

where P is the fluid pressure, k_0 is the initial permeability in the field, and a, c, and d are fitting parameters. In a particular test problem, we choose

k_0 = 4.368E-11,
a = 0.2003,
d = - 0.22252,
c = -0.03394

THM_injection.transient_run has lots of deprecated messages and one error message

Deprecated: PorousFlowInternalEnergyIdeal , PorousFlowEnthalpy , PorousFlow1PhaseP_VG , PorousFlowDensityConstBulk , PorousFlowViscosityConst

Error:
A finite stress material cannot both have an initial stress and an elasticity tensor with varying values; please use a defined constant elasticity tensor, such as ComputeIsotropicElasticityTensor, if your model defines an initial stress, or apply an initial strain instead

Pinging @cpgr and @sapitts .

Remove deprecated parameters

The incremental_form parameter in ComputeThermalExpansionEigenstrain has been deprecated for a long time, and we are going to remove it. Remove that from the Falcon tests that use it.

Fix THM_injection test

The test involves ComputeCappedWeakInclinedPlaneStress. In MOOSE we are in the process of changing the name of this class and related classes, so soon the THM_injection test will fail. The fix is straightforward - i'll send a PR once the changes are made in MOOSE.

remove variableGradientAux

VariableGradientAux does the same thing as the framework object VariableGradientComponent. So delete VariableGradientAux and replace any tests or uses of it with VariableGradientComponent.

NOTICE.txt missing

INL Tech Deployment wants a file called "NOTICE.txt" added to the repo.

transfer for kestrel app functionality to falcon

Before THM was open sourced, a test application (kestrel) was built to try multi apps between falcon and THM. Now that THM is OSS, we need to add the capabilities built in kestrel into falcon

Add a simple pressure dependent permeability function

Equation

The effective-stress-dependent permeability characteristics of the fracture/fault zone are assumed to follow the exponential law of (Nathenson 1999):

k = k_0 * exp (c * (p - p_0) / sigma)

where "k_0" is the permeability at zero stress, "c" is a fitting parameter that can be experimentally determined, "p" is the current fluid pressure, "p_0" is the initial fluid pressure, "sigma" is the total overburden confining stress.

Reference

Nathenson, Manuel. "The dependence of permeability on effective stress from flow tests at hot dry rock reservoirs at Rosemanowes (Cornwall) and Fenton Hill (New Mexico)." Geothermics 28.3 (1999): 315-340.

fix multiapps block in amr executions

The multiapps block is passing a cli_arg that is causing it to write to a different directory. Subcycling should also be used in these simulations so that the fracture subapp takes multiple steps per step in the matrix.

Create terrain meshing tool

Given a stack of XYZ terrain files, create a mesh with the layers as subdomains and interfaces as boundaries.

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.