res_read_conds.f90 Source File


This file depends on

sourcefile~~res_read_conds.f90~~EfferentGraph sourcefile~res_read_conds.f90 res_read_conds.f90 sourcefile~maximum_data_module.f90 maximum_data_module.f90 sourcefile~res_read_conds.f90->sourcefile~maximum_data_module.f90 sourcefile~reservoir_conditions_module.f90 reservoir_conditions_module.f90 sourcefile~res_read_conds.f90->sourcefile~reservoir_conditions_module.f90

Source Code

      subroutine res_read_conds
    
      use reservoir_conditions_module
      use maximum_data_module

      implicit none
      
      character (len=80) :: title = ""
      integer :: max_table = 0
      integer :: tnum_conds = 0
      integer :: ii = 0
      integer :: ictbl = 0
      integer :: isub_con = 0
      integer :: icc = 0
      integer :: imod = 0
      integer :: eof = 0
      logical :: i_exist         !                |check to determine if file exists
   
      inquire (file="res_conds.dat", exist=i_exist)
      if (.not. i_exist) return
      open (100,file="res_conds.dat")
      read (100,*,iostat=eof) title
      if (eof < 0) return
      read (100,*,iostat=eof) max_table
      if (eof < 0 .or. max_table < 1) return
      allocate (ctbl(max_table))
      
      db_mx%ctbl_res = max_table
      
      !! read data for each condition table
      do ictbl = 1, max_table
        read (100,*) ctbl(ictbl)%name, ctbl(ictbl)%num_conds, ctbl(ictbl)%num_modules
        allocate (ctbl(ictbl)%conds(ctbl(ictbl)%num_conds))
        allocate (ctbl(ictbl)%mods(ctbl(ictbl)%num_modules))
      
        !! loop through all conditions
        do ii = 1, ctbl(ictbl)%num_conds 
          !! read total number of sub conditions
          read (100,*) isub_con
          backspace (100)
          allocate (ctbl(ictbl)%conds(ii)%scon(isub_con))
          read (100,*) ctbl(ictbl)%conds(ii)%num_conds, (ctbl(ictbl)%conds(ii)%scon(icc), icc = 1, isub_con),    &
              ctbl(ictbl)%conds(ii)%action
        end do
      
        !! read each module
        do imod = 1, ctbl(ictbl)%num_modules
          read (100,*) tnum_conds
          allocate (ctbl(ictbl)%mods(imod)%con(tnum_conds))
          ctbl(ictbl)%mods(imod)%num_conds = tnum_conds
      
          !! read all subconditions
          do ii = 1, tnum_conds
            read (100,*) isub_con
            backspace (100)
            allocate (ctbl(ictbl)%mods(imod)%con(ii)%scon(isub_con))
            read (100,*) ctbl(ictbl)%mods(imod)%con(ii)%num_conds, (ctbl(ictbl)%mods(imod)%con(ii)%scon(icc), icc = 1, isub_con),  &
                ctbl(ictbl)%mods(imod)%con(ii)%action
          end do
        end do
      end do
    
         return      
      end subroutine res_read_conds