added functions to read out resolution, dimension and homogenization from mesh file
This commit is contained in:
parent
eb0cc24a8e
commit
c3e51e5330
|
@ -250,10 +250,18 @@ program mpie_spectral
|
||||||
|
|
||||||
character(len=1024) path,line
|
character(len=1024) path,line
|
||||||
logical, dimension(9) :: bc_maskvector
|
logical, dimension(9) :: bc_maskvector
|
||||||
integer(pInt), parameter :: maxNchunks = 24 ! 4 identifiers, 18 values for the matrices and 2 scalars
|
logical gotResolution,gotDimension,gotHomogenization
|
||||||
integer(pInt), dimension (1+maxNchunks*2) :: pos
|
|
||||||
|
integer(pInt), parameter :: maxNchunksInput = 24 ! 4 identifiers, 18 values for the matrices and 2 scalars
|
||||||
|
integer(pInt), dimension (1+maxNchunksInput*2) :: posInput
|
||||||
|
integer(pInt), parameter :: maxNchunksMesh = 7 ! 4 identifiers, 3 values
|
||||||
|
integer(pInt), dimension (1+2*maxNchunksMesh) :: posMesh
|
||||||
|
|
||||||
real(pReal), dimension(9) :: valuevector
|
real(pReal), dimension(9) :: valuevector
|
||||||
integer(pInt) unit, N_l, N_s, N_t, N_n, N, i,j,k,l ! numbers of identifiers, loop variables
|
|
||||||
|
integer(pInt) unit, N_l, N_s, N_t, N_n, N, i, j, k, l ! numbers of identifiers, loop variables
|
||||||
|
integer(pInt) a, b, c, e, homog
|
||||||
|
real(pReal) x, y, z
|
||||||
|
|
||||||
if (IargC() < 2) call IO_error(102)
|
if (IargC() < 2) call IO_error(102)
|
||||||
|
|
||||||
|
@ -271,9 +279,9 @@ program mpie_spectral
|
||||||
do
|
do
|
||||||
read(unit,'(a1024)',END=101) line
|
read(unit,'(a1024)',END=101) line
|
||||||
if (IO_isBlank(line)) cycle ! skip empty lines
|
if (IO_isBlank(line)) cycle ! skip empty lines
|
||||||
pos = IO_stringPos(line,maxNchunks)
|
posInput = IO_stringPos(line,maxNchunksInput)
|
||||||
do i = 1,maxNchunks,1
|
do i = 1,maxNchunksInput,1
|
||||||
select case (IO_lc(IO_stringValue(line,pos,i)))
|
select case (IO_lc(IO_stringValue(line,posInput,i)))
|
||||||
case('l','velocitygrad')
|
case('l','velocitygrad')
|
||||||
N_l = N_l+1
|
N_l = N_l+1
|
||||||
case('s','stress')
|
case('s','stress')
|
||||||
|
@ -303,29 +311,29 @@ program mpie_spectral
|
||||||
read(unit,'(a1024)',END=200) line
|
read(unit,'(a1024)',END=200) line
|
||||||
if (IO_isBlank(line)) cycle ! skip empty lines
|
if (IO_isBlank(line)) cycle ! skip empty lines
|
||||||
j=j+1
|
j=j+1
|
||||||
pos = IO_stringPos(line,maxNchunks)
|
posInput = IO_stringPos(line,maxNchunksInput)
|
||||||
do i = 1,maxNchunks,2
|
do i = 1,maxNchunksInput,2
|
||||||
select case (IO_lc(IO_stringValue(line,pos,i)))
|
select case (IO_lc(IO_stringValue(line,posInput,i)))
|
||||||
case('l','velocitygrad')
|
case('l','velocitygrad')
|
||||||
valuevector = 0.0_pReal
|
valuevector = 0.0_pReal
|
||||||
forall (k = 1:9) bc_maskvector(k) = IO_stringValue(line,pos,i+k) /= '#'
|
forall (k = 1:9) bc_maskvector(k) = IO_stringValue(line,posInput,i+k) /= '#'
|
||||||
do k = 1,9
|
do k = 1,9
|
||||||
if (bc_maskvector(k)) valuevector(k) = IO_floatValue(line,pos,i+k) ! assign values for the velocity gradient matrix
|
if (bc_maskvector(k)) valuevector(k) = IO_floatValue(line,posInput,i+k) ! assign values for the velocity gradient matrix
|
||||||
enddo
|
enddo
|
||||||
bc_mask(:,:,1,j) = reshape(bc_maskvector,(/3,3/))
|
bc_mask(:,:,1,j) = reshape(bc_maskvector,(/3,3/))
|
||||||
bc_velocityGrad(:,:,j) = reshape(valuevector,(/3,3/))
|
bc_velocityGrad(:,:,j) = reshape(valuevector,(/3,3/))
|
||||||
case('s','stress')
|
case('s','stress')
|
||||||
valuevector = 0.0_pReal
|
valuevector = 0.0_pReal
|
||||||
forall (k = 1:9) bc_maskvector(k) = IO_stringValue(line,pos,i+k) /= '#'
|
forall (k = 1:9) bc_maskvector(k) = IO_stringValue(line,posInput,i+k) /= '#'
|
||||||
do k = 1,9
|
do k = 1,9
|
||||||
if (bc_maskvector(k)) valuevector(k) = IO_floatValue(line,pos,i+k) ! assign values for the bc_stress matrix
|
if (bc_maskvector(k)) valuevector(k) = IO_floatValue(line,posInput,i+k) ! assign values for the bc_stress matrix
|
||||||
enddo
|
enddo
|
||||||
bc_mask(:,:,2,j) = reshape(bc_maskvector,(/3,3/))
|
bc_mask(:,:,2,j) = reshape(bc_maskvector,(/3,3/))
|
||||||
bc_stress(:,:,j) = reshape(valuevector,(/3,3/))
|
bc_stress(:,:,j) = reshape(valuevector,(/3,3/))
|
||||||
case('t','time','delta') ! increment time
|
case('t','time','delta') ! increment time
|
||||||
bc_timeIncrement(j) = IO_floatValue(line,pos,i+1)
|
bc_timeIncrement(j) = IO_floatValue(line,posInput,i+1)
|
||||||
case('n','incs','increments','steps') ! bc_steps
|
case('n','incs','increments','steps') ! bc_steps
|
||||||
bc_steps(j) = IO_intValue(line,pos,i+1)
|
bc_steps(j) = IO_intValue(line,posInput,i+1)
|
||||||
end select
|
end select
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
@ -346,6 +354,58 @@ program mpie_spectral
|
||||||
print *, ''
|
print *, ''
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
!read header of mesh file
|
||||||
|
a = 1_pInt
|
||||||
|
b = 1_pInt
|
||||||
|
c = 1_pInt
|
||||||
|
x = 1_pReal
|
||||||
|
y = 1_pReal
|
||||||
|
z = 1_pReal
|
||||||
|
|
||||||
|
gotResolution = .false.
|
||||||
|
gotDimension = .false.
|
||||||
|
gotHomogenization = .false.
|
||||||
|
path = getSolverJobName()
|
||||||
|
if (.not. IO_open_file(unit,path)) call IO_error(101,ext_msg=path)
|
||||||
|
|
||||||
|
rewind(unit)
|
||||||
|
do
|
||||||
|
read(unit,'(a1024)',END=100) line
|
||||||
|
if (IO_isBlank(line)) cycle ! skip empty lines
|
||||||
|
posMesh = IO_stringPos(line,maxNchunksMesh)
|
||||||
|
|
||||||
|
select case ( IO_lc(IO_StringValue(line,posMesh,1)) )
|
||||||
|
case ('dimension')
|
||||||
|
gotDimension = .true.
|
||||||
|
do i = 2,6,2
|
||||||
|
select case (IO_lc(IO_stringValue(line,posMesh,i)))
|
||||||
|
case('x')
|
||||||
|
x = IO_floatValue(line,posMesh,i+1)
|
||||||
|
case('y')
|
||||||
|
y = IO_floatValue(line,posMesh,i+1)
|
||||||
|
case('z')
|
||||||
|
z = IO_floatValue(line,posMesh,i+1)
|
||||||
|
end select
|
||||||
|
enddo
|
||||||
|
case ('homogenization')
|
||||||
|
gotHomogenization = .true.
|
||||||
|
homog = IO_intValue(line,posMesh,2)
|
||||||
|
case ('resolution')
|
||||||
|
gotResolution = .true.
|
||||||
|
do i = 2,6,2
|
||||||
|
select case (IO_lc(IO_stringValue(line,posMesh,i)))
|
||||||
|
case('a')
|
||||||
|
a = 2**IO_intValue(line,posMesh,i+1)
|
||||||
|
case('b')
|
||||||
|
b = 2**IO_intValue(line,posMesh,i+1)
|
||||||
|
case('c')
|
||||||
|
c = 2**IO_intValue(line,posMesh,i+1)
|
||||||
|
end select
|
||||||
|
enddo
|
||||||
|
end select
|
||||||
|
if (gotDimension .and. gotHomogenization .and. gotResolution) exit
|
||||||
|
enddo
|
||||||
|
|
||||||
temperature = 300.0_pReal
|
temperature = 300.0_pReal
|
||||||
call CPFEM_general(2,math_i3,math_i3,temperature,0.0_pReal,1_pInt,1_pInt,stress,dsde)
|
call CPFEM_general(2,math_i3,math_i3,temperature,0.0_pReal,1_pInt,1_pInt,stress,dsde)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue