Questions about TOUGH3 setup for 3D random permeability fields

Our lab wants to use TOUGH3 for the CO2 storage reservoir simulations of 3D random permeability fields. We are not sure about how to set up the 3D anisotropic permeability correctly in TOUGH3; therefore, we would like to ask for help. Our questions are:  

  1. Based on the TOUGH3 user manual on p.73, it said that these values can be set in the USERX(I=3) of ELEME.1 for each grid element. Does it mean that we simply append the three permeability values right after the X, Y, Z in the same line (and then run TOUGH3)? 
  2. It seems like we also need to use MOMOP block for the 3D anisotropic permeability setting, but we are not sure about it because there is no example in the user manual. Do we need to create a separate MOMOP block for that?  If yes, how? Could anyone please give us an example? 
  3. Some of our researchers have used TOUGHREACT with TOUGH2 for the simulations of 3D random permeability fields before. So, can TOUGH3 be used in TOUGHREACT like TOUGH2?  (or we need to wait for the update of TOUGHREACT?) 

Any answers or suggestions would be very much appreciated. Thanks! 

- Cheryl

5replies Oldest first
  • Oldest first
  • Newest first
  • Active threads
  • Popular
  • Hi Yamei, the answers to your questions are:

    1. Yes, please following the instructions (and format) in the User's guide.

    2. A MOMOP block is similar to any other blocks, starting with keyword MOMOP.  In the following example, in MOMOP block, we set MOP2(2)=5,  MOP2(10)=1, and MOP2(20)=1. You can find what each MOP2 represents in the TOUGH output file.

    05       1         1     2

    3. What is in TOUGHREACT is tough2. It requires significant amount of work to put in TOUGH3 into TOUGHREACT and it is not done yet.


    There are some updates to the code involving heterogeneity in the code Multi.f90 around line 591. Please make the following change.

    Please replace:

            do i = 1,2
              if (iran .ne. 0) then
                 perl(i) = perl(i)*pm(nexidx(i))
              end if
               ! Assign anisotropic permeability for each grid block
              if (mop2(20) .gt. 0) then
                 CALL HETERO(nexidx(i),nmat(i),nloc2(i),iso,USRX,perl(i),ph(i))
               ! ysw for anisotropic fracrtures 6/30/95
               if(ifaniso(nmat(i)).eq.1) perl(i)=perl(i)+PERF(iso,nmat(i))
            end do


            do i = 1,2
               ! Assign anisotropic permeability for each grid block
                USRX=USERX(ISO,nexidx(i))   ! change from connection number N to connected element number nexidx
                 CALL HETERO(nexidx(i),nmat(i),nloc2(i),iso,USRX,perl(i),ph(i))
               ! ysw for anisotropic fracrtures 6/30/95
               if(ifaniso(nmat(i)).eq.1) perl(i)=perl(i)+PERF(iso,nmat(i))
            end do
    Like 1
  • Hi Ya-Mei Yang,


    Could you succeed in doing that? Did you have to adjust MOP2(20) in order to apply the random permeability field or it worked without it?


    Mhamad Mahdi

    • Mhamad Mahdi Alloush Hi Mhamad,

      It should work if you set MOP2(20) if you set your permeability modifiers in block ELEME. Otherwise, you can define elementwise permeability modifiers in block INCON (columns 31-60, after porosity), no need to set MOP2(20) in that case.

  • Thanks Keurfon,


    This also applies if I want to assign absolute permeabilities?


    The thing is that I have variable absolute permeability data from eclipse and I want to insert that in TOUGH.



    • Mhamad Mahdi Alloush Yes, it does. If your permeability modifier is positive, TOUGH3 treats it as absolute permeability. If negative, it treats as a multiplier (permeability of element's rock is multiplied by the absolute value of permeability modifier).

Like Follow
  • 2 wk agoLast active
  • 5Replies
  • 78Views
  • 4 Following