diff --git a/code/m_parameters.f90 b/code/m_parameters.f90 index 34c7dd5..3d7fe78 100644 --- a/code/m_parameters.f90 +++ b/code/m_parameters.f90 @@ -20,17 +20,22 @@ module m_parameters real :: SL_u - integer :: omitnum - - integer, allocatable :: omit_t(:,:) - - integer, allocatable :: file_dist(:) - - integer, allocatable :: export_offset(:) - real, parameter :: pi=3.14159265358979323846 + real, parameter :: me=1.00e-20 + REAL :: hx,dt,vis,sc,diff,tf,t_now,t_uf,dt_uf + + REAL :: lewis + + REAL :: minf,tar_lo,u0,ctmp,lo_flm=0. + + REAL :: er_lof=0., erdot=0. + + REAL :: pflame,pflold,oldu + + INTEGER :: ncyc=0,int_pr,nx + contains end module m_parameters diff --git a/code/makefile b/code/makefile index b49f9ce..4ad6d7b 100644 --- a/code/makefile +++ b/code/makefile @@ -13,12 +13,12 @@ endif compiler = gfortran ex : test.o ysolve.o m_parameters.o m_calculate.o m_compact.o - ${compiler} -o ex test.o ysolve.o m_compact.o + ${compiler} -o ex test.o ysolve.o m_parameters.o m_calculate.o m_compact.o test.o : test.f90 ysolve.mod m_compact.mod ${compiler} -c ${flags} test.f90 -ysolve.o ysolve.mod : ysolve.f90 m_compact.mod +ysolve.o ysolve.mod : ysolve.f90 m_compact.mod m_parameters.mod ${compiler} -c ${flags} ysolve.f90 m_compact.o m_compact.mod : m_compact.f90 diff --git a/code/test.sh b/code/test.sh index f05c4f4..d304c46 100644 --- a/code/test.sh +++ b/code/test.sh @@ -1,4 +1,4 @@ cd sample/4pi-IC1 ls -../../ex +../../ex itape diff -y sfield.dat sfield.diff diff --git a/code/ysolve.f90 b/code/ysolve.f90 index c9e686e..c0b7707 100644 --- a/code/ysolve.f90 +++ b/code/ysolve.f90 @@ -1,14 +1,9 @@ MODULE ysolve USE m_compact + USE m_parameters + IMPLICIT NONE - PRIVATE - REAL, PARAMETER :: pi=3.14159265358979323846 - REAL :: hx,dt,vis,sc,diff,pre,ac,bc,tf,t_now,t_uf,dt_uf - REAL :: lewis - REAL :: c_cut,c_ref,refwr,minf,tar_lo,u0,ctmp,l_0,lo_flm=0. - REAL :: er_lof=0., erdot=0.,min_wr,prof_wr - REAL :: pflame,pflold,oldu - INTEGER :: ncyc=0,int_pr,nx + REAL, DIMENSION(:), ALLOCATABLE :: u REAL, DIMENSION(:,:), ALLOCATABLE :: y1,y2,yf REAL, DIMENSION(:), ALLOCATABLE :: uxt,duxt @@ -28,7 +23,7 @@ LOGICAL :: read_itape, read_stdin CHARACTER(100) :: itape_name - PUBLIC :: solve, parse + CONTAINS !------------------------------------------------------------------------ SUBROUTINE parse @@ -80,6 +75,7 @@ END SUBROUTINE parse !------------------------------------------------------------------------ SUBROUTINE solve + INTEGER :: i,j,k,savenum REAL :: pflame,pflold,delf=0. @@ -93,7 +89,7 @@ DO CALL SET_BC - CALL RK4 + CALL RK4(fns) IF(t_now.ge.tf) EXIT IF(t_uf.ge.dt_uf) THEN pflold=pflame @@ -219,7 +215,7 @@ OPEN (305,FILE='sfield.dat') DO i=1,nx - WRITE (305,'(2e30.20)') y1(i,1), y1(i,2) + WRITE (305,'(e30.20)') y1(i,1) ENDDO CLOSE (305) @@ -388,14 +384,25 @@ END SUBROUTINE READ_INTRO - SUBROUTINE RK4 + SUBROUTINE RK4(rhs) + + INTERFACE + SUBROUTINE rhs(r1,f) + REAL, INTENT(IN), DIMENSION(:,:) :: r1 + REAL, INTENT(OUT), DIMENSION(:,:) :: f + END SUBROUTINE rhs + END INTERFACE + + REAL :: test_var + istage=1; CALL substep(y1,y1,y2,yf) istage=2; CALL substep(y1,y2,y1,yf) istage=3; CALL substep(y2,y1,y2,yf) istage=4; CALL substep(y1,y2,y1,yf) istage=5; CALL substep(y2,y1,y2,yf) - END SUBROUTINE RK4 -!------------------------------------------------------------------------ + + CONTAINS + SUBROUTINE substep(ri,r1,r2,f) REAL, INTENT(INOUT),DIMENSION(:,:) :: ri,r1,r2 REAL, INTENT(OUT),DIMENSION(:,:) :: f @@ -403,7 +410,7 @@ INTEGER :: i,j,k REAL :: at,bt - CALL fns(ri,f) + CALL rhs(ri,f) IF(istage<5) THEN at=a(istage)*dt bt=(b(istage)-a(istage))*dt @@ -414,6 +421,8 @@ r1=r1+bt*f ENDIF END SUBROUTINE substep + + END SUBROUTINE RK4 !------------------------------------------------------------------------ SUBROUTINE fns(r1,f) REAL, INTENT(IN),DIMENSION(:,:) :: r1