From c22054020c56bad659cfc32d5cebc521651a2bfe Mon Sep 17 00:00:00 2001
From: Dave Whipp <dwhipp@dal.ca>
Date: Mon, 20 Dec 2010 19:07:17 +0000
Subject: [PATCH] Added input of matrule to determine whether divFEM, majority
 or minority volume is used for material assignment in elements. Added input
 of bulkvisc to determine whether a penalty value or bulk viscosity is input.
 Added input of init_e2d to specify whether or not plastic materials should
 have their effective viscosity calculated using an initial strain rate.

---
 src/read_input_file.f90 | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/read_input_file.f90 b/src/read_input_file.f90
index 937ffa2e..c41bfaf5 100644
--- a/src/read_input_file.f90
+++ b/src/read_input_file.f90
@@ -16,8 +16,8 @@
 !------------------------------------------------------------------------------|
 !------------------------------------------------------------------------------|
 
-subroutine read_input_file (params,threadinfo,material0,mat,             &
-                            surface,boxes,sections,cube_faces)         
+subroutine read_input_file (params,threadinfo,material0,mat,surface,boxes,     &
+                           sections,cube_faces)         
 
 !------------------------------------------------------------------------------|
 !(((((((((((((((( Purpose of the routine  ))))))))))))))))))))))))))))))))))))))
@@ -41,6 +41,8 @@ subroutine read_input_file (params,threadinfo,material0,mat,             &
 !     material 0 is void
 ! leveluniform_oct is level of uniform discretization (power of 2)
 ! levelmax_oct is maximum discretization level
+! matrule is the flag that determines the rule used for assigning material
+!    properties within the model volume
 ! levelcut is maximum level (within a leave) used to estimate integrals
 !    in divfem approximation
 ! levelapprox is maximum level to use to estimate positive volume
@@ -157,6 +159,22 @@ if (iproc==0) call scanfile (params%infile,'material0',material0,ires)
 call mpi_bcast(material0,1,mpi_integer,0,mpi_comm_world,ierr)
 write(threadinfo%Logunit,*) 'material0 ',material0
 
+params%bulkvisc=.false.
+if (iproc==0) then
+  call scanfile (params%infile,'bulkvisc',answer,ires)
+  params%bulkvisc=(trim(answer)=='T')
+endif
+call mpi_bcast(params%bulkvisc,1,mpi_logical,0,mpi_comm_world,ierr)
+write(threadinfo%Logunit,*) 'bulkvisc ',params%bulkvisc
+
+params%init_e2d=.false.
+if (iproc==0) then
+  call scanfile (params%infile,'init_e2d',answer,ires)
+  params%init_e2d=(trim(answer)=='T')
+endif
+call mpi_bcast(params%init_e2d,1,mpi_logical,0,mpi_comm_world,ierr)
+write(threadinfo%Logunit,*) 'init_e2d ',params%init_e2d
+
 do i=0,params%nmat
    write(cm,'(i3)') i
    il=1
@@ -248,19 +266,21 @@ if (iproc==0) call scanfile (params%infile,'leveluniform_oct',params%levelunifor
 call mpi_bcast(params%leveluniform_oct,1,mpi_integer,0,mpi_comm_world,ierr)
 write(threadinfo%Logunit,*) 'leveluniform_oct',params%leveluniform_oct
 
-
 params%levelmax_oct=4
 if (iproc==0) call scanfile (params%infile,'levelmax_oct',params%levelmax_oct,ires)
 call mpi_bcast(params%levelmax_oct,1,mpi_integer,0,mpi_comm_world,ierr)
 write(threadinfo%Logunit,*) 'levelmax_oct',params%levelmax_oct
 
+params%matrule=0
+if (iproc==0) call scanfile (params%infile,'matrule',params%matrule,ires)
+call mpi_bcast(params%matrule,1,mpi_integer,0,mpi_comm_world,ierr)
+write(threadinfo%Logunit,*) 'matrule',params%matrule
 
 params%levelcut=2
 if (iproc==0) call scanfile (params%infile,'levelcut',params%levelcut,ires)
 call mpi_bcast(params%levelcut,1,mpi_integer,0,mpi_comm_world,ierr)
 write(threadinfo%Logunit,*) 'levelcut',params%levelcut
 
-
 params%levelapprox=3
 if (iproc.eq.0) call scanfile (params%infile,'levelapprox',params%levelapprox,ires)
 call mpi_bcast(params%levelapprox,1,mpi_integer,0,mpi_comm_world,ierr)
-- 
GitLab