idaholab / falcon Goto Github PK
View Code? Open in Web Editor NEWFracturing And Liquid CONservation
License: GNU Lesser General Public License v2.1
Fracturing And Liquid CONservation
License: GNU Lesser General Public License v2.1
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
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.
Make an example of the DFN multiapp where the 2d DFN mesh creates an elemental and nodal field for aperture and nodal pressure.
I was showing @AhmedAlmetwally how to use github and we accidentally pushed a practice test that got merged. This will revert that commit.
VariableGradientAux does the same thing as the framework object VariableGradientComponent. So delete VariableGradientAux and replace any tests or uses of it with VariableGradientComponent.
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.
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.
in order to use the closestpointprojectionReporter with the porous flow point sources, we need them to accept reporter values for the point location.
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)
Add new diffusion kernels using enriched Galerkin with testing. Use the existing DG diffusion kernels as an example.
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:
Re-implement stochastic field permeability taken from the legacy Falcon code
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.
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.
A coverage configuration file in the repo will allow for the changing of coverage requirements from within a PR.
Add a .coverage
file to the root that defines the coverage requirements.
Simplifies changing coverage requirements and makes coverage requirements more transparent.
Koenradd Beckers made this example using the DFN multiapp.
Implement a PP class to return the time integrated value of a reporter.
The issue was discovered when testing idaholab/moose#21791
This was likely always happening, but the old differ was not robust enough to catch it. Since there is no requirements-related problems with simply making them longs, that is what should be done.
Opening an issue to work on the documentation
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.
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.
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.
The old JSON and XML differs are being changed to a universal schema differ with more functionality. That means that the tests in falcon that use them need to be changed as well.
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.
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
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
The time derivative term in the mass balance misses the derivatives respect to temperature.
INL Tech Deployment wants a file called "NOTICE.txt" added to the repo.
So that we don't need ssh keys to pull falcon.
We need to find all of the locations where a line intersects a DFN. This data needs to be in a reporter that can be consumed by a dirac kernel. This will model inlet and outlet boreholes.
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
).
Given a stack of XYZ terrain files, create a mesh with the layers as subdomains and interfaces as boundaries.
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.
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.
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.
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.
The second approach, after implementation and testing, shows best flexibility. The detailed procedure is as blow:
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"
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.
"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"
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.
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/
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.
A recent MOOSE commit (PR #8914) broke the THM_injection test.
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.
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!!
Migrate to smart pointers in main.C
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.
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
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.
[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'
[../]
Due to issues in MOOSE, unused parameters were not correctly erroring. The problem is being addressed in a PR here: idaholab/moose#22840
However, falcon has accumulated unused parameters that should be replaced.
This reporter needs to be restricted to certain blocks to limit the nodes it selects. This is important when a 2D fracture is embedded in a matrix mesh.
Seems it is not a critical failure. But we will look at it later on.
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.
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.