Hello guys . Does anybody know how to simulate the deformation of the soil caused by fluidflow in both TOUGH and FLAC3D? Thanks

22replies Oldest first
  • Oldest first
  • Newest first
  • Active threads
  • Popular
  • Unfortunately, it is not as straightforward as it sounds.

    The "easiest" way that does not require access to TOUGH source code is to make FLAC3D call TOUGH at each time step and import the pressure and temperature from TOUGH into FLAC. For two-way coupling (stress-induced porosity/permeability changes), you should update TOUGH input files before calling TOUGH in FLAC3D.

    Like 1
    • Keurfon Luu can you please be more explicit ?

      Like
    • Floriane Youzan I didn't try the FLACTOUGH (FLAC calling TOUGH) implementation myself. I am suggesting it since the current implementation of TOUGHFLAC (TOUGH calling FLAC) alters TOUGH source code a lot which requires a really good knowledge of the Fortran language. It's even more complicated with TOUGH3 since you should now also consider that arrays are distributed in parallel. However, the TOUGHFLAC implementation is more optimized as it does not require to read and write TOUGH input/output files at each time step.

      Assuming that you have already setup your problem for TOUGH and FLAC3D independently, a quick algorithm would look like as below:

      1. Solve the mechanical state in FLAC3D to a time step Dt,

      2. Calculate stress-induced changes in porosity and/or permeability and update TOUGH input files (MESH and/or INCON) with these new values,

      3. Solve fluid and heat flow in TOUGH to time step Dt,

      4. Import pressure and temperature from SAVE file and update zone pore pressure and temperature in FLAC3D,

      5. Loop back to step 1 until end of simulation.

      FLAC3D has a Python interface which should make this a bit easier to implement compared to using FISH. For instance, you can call an external program in Python as follow:

      import subprocess
      
      subprocess.call(["tough3-eco2n", "INFILE"], shell=True)
      

      To update a zone pore pressure and temperature, I don't remember if there is a zone array for these properties, but you can loop over each zone and update the parameters as follow:

      import itasca as it
      
      for zone in it.zone.list():
          # Interpolate my_pp and my_temp from SAVE file
          zone.set_pp(my_pp)
          zone.set_temp(my_temp)
      

      Reading TOUGH input and output files can be done using toughio. You can install toughio in FLAC3D by running this command in a Windows console:

      cmd /C ""C:/Program Files/Itasca/FLAC3D700/exe64/python36/Scripts/pip.exe"" install toughio --user
      Like 1
    • Keurfon Luu Thank you

      Like
    • Keurfon Luu i am trying to solve the mechanical State in FLAC3D but I am not sure how to do it ! I found an example on FLAC about Groundwater but I am not sure it’s appropriate 

      Like
    • Floriane Youzan Not sure about what you are asking. Assuming that your mesh is generated (with all zone groups assigned if necessary), you simply have to assign constitutive models and properties to your zones, initialize the initial and boundary stress conditions (e.g. roller at the bottom) and then solve the mechanical state to equilibrium.

      Like
    • Keurfon Luu i am fairly new at FLAC3D so when you say solve nechanical state to DT , I don’t really know how to do it. Can you please recommend me an example in the FLAC manual that I can follow ? 
      thanks

      Like
    • Floriane Youzan I've attached a sample FLAC3D script. It shows the main commands to set up your model in FLAC3D.

      Like 1
    • Keurfon Luu thank youuu so much. May God bless you!!!

      Like
    • Floriane Youzan hey, the .dat file you sent me previously, can you please tell me the mesh size you used ? I just wanna compare something.

      Thanks 

      Like
    • Keurfon Luu 

      hey, the .dat file you sent me previously, can you please tell me the mesh size you used ? I just wanna compare something.

      Thanks 

      Like
    • Floriane Youzan It's a 2D model (extruded to 3D):

      xlim = [-350000.0, 350000.0]

      zlim = [-3000.1, 0.0]

      Like 1
    • Keurfon Luu hello, this is the error I get when I try to run the model:

      Model is not current configured for FluidModule, see the MODEL CONFIGURE command.

      While processing line 4 of source C:/Users/LabUser/Documents/Itasca/flac3d700/My Projects/try.dat. Do you know what is it about?

      Like
    • Floriane Youzan Sorry for the late reply.

      I never encountered this issue. Could you send me your script?

      Like
    • Keurfon Luu no problem ! I just used the dat.file you sent me and changed the dimension of the mesh that’s it

      Like
    • Floriane Youzan I am not sure what Line 4 is... is it the command

      model configure fluid

      that does not work?

      Like
    • Keurfon Luu 

      ; Load mesh
      zone import '../mesh.f3grid'

      ; Hydraulic parameters
      zone fluid cmodel assign isotropic
      zone fluid property biot 1.0
      zone fluid property permeability 1.0e-17
      zone fluid property porosity 0.01
      zone gridpoint initialize fluid-modulus 1.0

      ; Mechanical parameters
      zone cmodel assign elastic
      zone property young 5e9
      zone property poisson 0.25

      ; Thermal parameters
      zone thermal cmodel assign isotropic
      zone thermal property conductivity 1.8
      zone thermal property expansion 0.0
      zone thermal property specific-heat 1500

      ; In situ stress
      zone initialize stress-xx 0.0 gradient 0 0 22170.6
      zone initialize stress-yy 0.0 gradient 0 0 22170.6
      zone initialize stress-zz 0.0 gradient 0 0 22170.6
      zone initialize density 2260
      model gravity 0 0 -9.81

      ; In situ pressure and temperature
      zone gridpoint initialize pore-pressure 1.e5 gradient 0 0 -9810.0
      zone gridpoint initialize temperature 10.0 gradient 0 0 -0.025

      ; Mechanical boundaries
      zone gridpoint fix velocity-y
      zone gridpoint fix velocity-z range position-z -3000.1
      zone gridpoint fix velocity-x range position-x -350000.0
      zone gridpoint fix velocity-x range position-x 350000.0

      ; Disable large strain (only FLAC3D v7)
      model large-strain off

      ; Solve model for mechanical equilibrium
      model solve mech ratio 1.0e-8

       

      I used the exact same script but I changed the mesh to mine that's what I did

      Like
    • Floriane Youzan You have to call

      model configure fluid

      before using

      zone fluid something

      Same for thermal, you have to call

      model configure thermal

      before using

      zone thermal something

      See my original script.

      Like
    • Keurfon Luu I thought that is what I did. when you say call you mean write that before I execute the whole code

      Like
    • Floriane Youzan Put it at the beginning of the script. In my original sample script, it starts with

      model configure fluid
      model configure thermal
      
      Like
  • I guess this reference from Rutqvist gives you a good overview of coupling the two codes.

    Julia

    Like 1
    • JuDi thank you

      Like
Like Follow
  • 2 wk agoLast active
  • 22Replies
  • 84Views
  • 3 Following