PorousFlow: masking areas for conductive flow/transport #20139
-
Dear all, |
Beta Was this translation helpful? Give feedback.
Replies: 10 comments 48 replies
-
Hello You should be able to block-restrict some physics. I'm not sure how it's done for porous flow. What does your input file look like? Do you have a large Guillaume |
Beta Was this translation helpful? Give feedback.
-
The easiest thing is to set permeability zero or very low in those impermeable blocks. Almost definitely this will work well, but before doing this, just make sure your physics is going to work properly. For instance, it sounds like you're doing a thermal-hydraulic simulation. If you set permeability = 0 in some blocks, and then reduce/increase the temperature when using a high-precision equation of state for your fluid, then you might start to probe the limits of the EOS's validity. |
Beta Was this translation helpful? Give feedback.
-
OK, I'll try first if with an updated, hopefully better, extrapolation of the EOS and fixed porosity the synthetic test for its most realistic scenario converges. On alternative (3), I'm already passing stuff from matlab to MOOSE through EXODUS files [not in these synthetic but in the real case on which I initially failed to make it converge], prepared through an intermediate python script [called by matlab], using the package "exomerge" from Sandia NL, where I am passing full ICs files for temperature and porepressure, as well as nodesets for BCs ---I still haven't figured out how to prepare sidesets, but with nodeset BCs it is working for me by now---]. So, I believe all what could be needed as input could be automated as well. On BCs my question is more about how MOOSE works when only some blocks are selected for a specific Kernel computation. That is, should the BCs be on nodes pertaining to these selected sub-blocks (either in their boundary or within their boundaries), or the BCs should be defined everywhere in the complete mesh [if so, in my mind I can just think off DirichletBC]. But don't bother in answering this [don't want to take an excess of your time], I'll do my homework with MOOSE. I would for sure need help on unravelling PorousFlowFullySaturated into the list of Kernels and Materials. But also, I'll start by studying it a bit more. |
Beta Was this translation helpful? Give feedback.
-
Hello Andy, So, I've gone for option [3] [mask the deepest block ---'mantle'---so no porepressure lives there. I've now run the synthetic [4 layer on top of each other] indicating manually the Kernels and Material brought by the action PorousFlowFullySaturated [BTW, the documentation is also great!]. So, I've reproduced my former synthetic tests. Up to here, everything seems great. Yet, now I'm stuck in how to specify that one variable [porepressure in this case] only lives in some blocks. I do not seem to find this in the documentation. So, I am getting a lot of errors, that I believe come because the porepressure Variable is seen everywhere: Material property 'PorousFlow_saturation_qp', requested by 'lambda_mantle' is not defined on block mantle |
Beta Was this translation helpful? Give feedback.
-
Hello, So, I’ve tried the I’ve also done an alternative attempt, which I’ll comment in a separate post to avoid mixing details [Mesh] [GlobalParams] [UserObjects] [Variables] [Kernels] # as added by the action [PorousFlowFullySaturated] [ICs] [BCs] [Modules] [Materials] [porepressure_material] [Preconditioning] [Executioner] [Outputs] |
Beta Was this translation helpful? Give feedback.
-
Hello, Then I’ve created and alternative variable, non-controlled by the PorousFlow dictator, named {temperature_mantle} which only exists in the mantle, and is subject only to conductive evolution, through the use of non PorousFlow Kernels: That is: the aim of the test is [a] to see if PorousFlow can work only on a subdomain(s), and [b] if this worked, then I'd expect the overall “multiphysics” problem could be approached with the current PorousFlow+MOOSE [i.e. only heat conduction in the mantle, and the THC —thermo-hydro-chemical problem everywhere else—], provided that later on Well, unfortunately, PorousFlow gives an error again at initialisation of Materials: … It appears that at initialisation, If so, and there is anything I could do to help adding this possibility [facing my severe lack of C++ knowledge], please let me know. I am pasting the self-contained input file for this test. [Mesh] [GlobalParams] [UserObjects] [Variables] [Kernels] # as added by the action [PorousFlowFullySaturated] [ICs] [BCs] [Modules] [Materials] [Preconditioning] [Executioner] [Outputs] |
Beta Was this translation helpful? Give feedback.
-
Hi @cpgr , i think we need to fix a bug in PorousFlow . The problem is when the PorousFlow Variables are block restricted. MOOSE then complains it needs certain Materials on blocks where the PorousFlow Variables do not exist. For instance, if the PorousFlow Variables (and Materials, etc) do not appear on
Note the (It appears that the "core" variables, such as Hopefully today i'll have time to create a simple example. |
Beta Was this translation helpful? Give feedback.
-
Oh, I wasn't expecting this! So if I understand this, the joiner makes a material everywhere, even where a variable and subsequent nodal material aren't even present? It all works when there is the same material defined on different blocks, as long as it is on all blocks, but fails when one block doesn't have that material (like in the example above). Hopefully you can propagate the block info easily enough. |
Beta Was this translation helpful? Give feedback.
-
Fixing this problem in #20260 |
Beta Was this translation helpful? Give feedback.
-
Hi @garciapintado - how is your modelling going? |
Beta Was this translation helpful? Give feedback.
Fixing this problem in #20260