From 042e594e074e500672af0a2f85bd7ca76f21151a Mon Sep 17 00:00:00 2001 From: ignis Date: Fri, 30 Aug 2019 07:04:39 +0900 Subject: [PATCH] move parameter reader from ysolve to m_parameters --- code/m_parameters.f90 | 78 +++++++++++++++++++++++++++++++++++ code/test.f90 | 6 +++ code/ysolve.f90 | 94 ++++++++----------------------------------- 3 files changed, 100 insertions(+), 78 deletions(-) diff --git a/code/m_parameters.f90 b/code/m_parameters.f90 index 3d7fe78..fa78b7c 100644 --- a/code/m_parameters.f90 +++ b/code/m_parameters.f90 @@ -36,6 +36,84 @@ module m_parameters INTEGER :: ncyc=0,int_pr,nx + LOGICAL :: read_itape, read_stdin + + CHARACTER(100) :: itape_name + contains + SUBROUTINE READ_INTRO + CHARACTER(LEN=8) :: cdum + INTEGER :: itape=300,otape=301 + INTEGER :: i + + IF (read_stdin) THEN + itape=5 + ELSE + OPEN(itape,FILE=itape_name) + END IF + + OPEN(otape,FILE='otape') + READ(itape,*) cdum,nx + WRITE(otape,*) cdum,nx + READ(itape,*) cdum,l_0 + WRITE(otape,*) cdum,l_0 + READ(itape,*) cdum,int_pr + WRITE(otape,*) cdum,int_pr + READ(itape,*) cdum,tar_lo + WRITE(otape,*) cdum,tar_lo + READ(itape,*) cdum,dt + WRITE(otape,*) cdum,dt + READ(itape,*) cdum,sc + WRITE(otape,*) cdum,sc + READ(itape,*) cdum,vis + WRITE(otape,*) cdum,vis + READ(itape,*) cdum,pre + WRITE(otape,*) cdum,pre + READ(itape,*) cdum,ac + WRITE(otape,*) cdum,ac + READ(itape,*) cdum,bc + WRITE(otape,*) cdum,bc + READ(itape,*) cdum,u0 + WRITE(otape,*) cdum,u0 + READ(itape,*) cdum,tf + WRITE(otape,*) cdum,tf + READ(itape,*) cdum,dt_uf + WRITE(otape,*) cdum,dt_uf + READ(itape,*) cdum,ctmp + WRITE(otape,*) cdum,ctmp + READ(itape,*) cdum,c_cut + WRITE(otape,*) cdum,c_cut +! READ(itape,*) cdum,cs +! WRITE(otape,*) cdum,cs + READ(itape,*) cdum,c_ref + WRITE(otape,*) cdum,c_ref + READ(itape,*) cdum,min_wr + WRITE(otape,*) cdum,min_wr + READ(itape,*) cdum,prof_wr + WRITE(otape,*) cdum,prof_wr + READ(itape,*) cdum,lewis + WRITE(otape,*) cdum,lewis + + IF (.not.read_stdin) THEN + CLOSE(itape) + END IF + + l_0=l_0*pi + + hx=l_0/REAL(nx) + cdum='hx' + WRITE(otape,*) cdum,hx + cdum='Ta/Tu' + WRITE(otape,*) cdum,ac + cdum='Tb/Tu' + WRITE(otape,*) cdum,bc+1 + diff=vis/sc + cdum='diff' + WRITE(otape,*) cdum,diff + + refwr=pre*1.*exp(-ac/(1.+bc*c_ref)) + + END SUBROUTINE READ_INTRO + end module m_parameters diff --git a/code/test.f90 b/code/test.f90 index d3443d3..da237dd 100644 --- a/code/test.f90 +++ b/code/test.f90 @@ -7,5 +7,11 @@ USE ysolve IMPLICIT NONE CALL parse + + CALL init_solver + CALL solve + + CALL finalize_solver + END PROGRAM test diff --git a/code/ysolve.f90 b/code/ysolve.f90 index c0b7707..6e88986 100644 --- a/code/ysolve.f90 +++ b/code/ysolve.f90 @@ -21,9 +21,6 @@ 2114624349019./3568978502595., & 5198255086312./14908931495163. /) - LOGICAL :: read_itape, read_stdin - CHARACTER(100) :: itape_name - CONTAINS !------------------------------------------------------------------------ SUBROUTINE parse @@ -79,8 +76,6 @@ INTEGER :: i,j,k,savenum REAL :: pflame,pflold,delf=0. - CALL READ_INTRO - CALL ludcmp(nx,5,5,1,0,0) CALL SET_IC @@ -299,80 +294,11 @@ END SUBROUTINE SET_IC - SUBROUTINE READ_INTRO - CHARACTER(LEN=8) :: cdum - INTEGER :: itape=300,otape=301,ierr - INTEGER :: i + SUBROUTINE init_solver - IF (read_stdin) THEN - itape=5 - ELSE - OPEN(itape,FILE=itape_name) - END IF + INTEGER :: ierr - OPEN(otape,FILE='otape') - READ(itape,*) cdum,nx - WRITE(otape,*) cdum,nx - READ(itape,*) cdum,l_0 - WRITE(otape,*) cdum,l_0 - READ(itape,*) cdum,int_pr - WRITE(otape,*) cdum,int_pr - READ(itape,*) cdum,tar_lo - WRITE(otape,*) cdum,tar_lo - READ(itape,*) cdum,dt - WRITE(otape,*) cdum,dt - READ(itape,*) cdum,sc - WRITE(otape,*) cdum,sc - READ(itape,*) cdum,vis - WRITE(otape,*) cdum,vis - READ(itape,*) cdum,pre - WRITE(otape,*) cdum,pre - READ(itape,*) cdum,ac - WRITE(otape,*) cdum,ac - READ(itape,*) cdum,bc - WRITE(otape,*) cdum,bc - READ(itape,*) cdum,u0 - WRITE(otape,*) cdum,u0 - READ(itape,*) cdum,tf - WRITE(otape,*) cdum,tf - READ(itape,*) cdum,dt_uf - WRITE(otape,*) cdum,dt_uf - READ(itape,*) cdum,ctmp - WRITE(otape,*) cdum,ctmp - READ(itape,*) cdum,c_cut - WRITE(otape,*) cdum,c_cut -! READ(itape,*) cdum,cs -! WRITE(otape,*) cdum,cs - READ(itape,*) cdum,c_ref - WRITE(otape,*) cdum,c_ref - READ(itape,*) cdum,min_wr - WRITE(otape,*) cdum,min_wr - READ(itape,*) cdum,prof_wr - WRITE(otape,*) cdum,prof_wr - READ(itape,*) cdum,lewis - WRITE(otape,*) cdum,lewis - - IF (.not.read_stdin) THEN - CLOSE(itape) - END IF - -! hx=l_0*pi/REAL(nx) - hx=l_0*pi/REAL(nx-1) - cdum='hx' - WRITE(otape,*) cdum,hx - cdum='Ta/Tu' - WRITE(otape,*) cdum,ac - cdum='Tb/Tu' - WRITE(otape,*) cdum,bc+1 - diff=vis/sc - cdum='diff' - WRITE(otape,*) cdum,diff - -! refwr=pre*1.*exp(-ac/(1.+bc*c_cut)) -! minf=exp((c_ref-c_cut)*prof_wr) - - refwr=pre*1.*exp(-ac/(1.+bc*c_ref)) - l_0=l_0*pi + CALL READ_INTRO ALLOCATE( u(nx),STAT=ierr) ; u=0. ALLOCATE(y1(nx,2),STAT=ierr) ; y1=0. @@ -382,7 +308,19 @@ ALLOCATE(duxt(nx),STAT=ierr) ; duxt=0. ALLOCATE(dm(nx),STAT=ierr) ; dm=diff - END SUBROUTINE READ_INTRO + END SUBROUTINE init_solver + + SUBROUTINE finalize_solver + + DEALLOCATE( u) + DEALLOCATE(y1) + DEALLOCATE(y2) + DEALLOCATE(yf) + DEALLOCATE(uxt) + DEALLOCATE(duxt) + DEALLOCATE(dm) + + END SUBROUTINE finalize_solver SUBROUTINE RK4(rhs)