118 lines
2.2 KiB
Fortran
118 lines
2.2 KiB
Fortran
program makeinit
|
|
implicit none
|
|
|
|
integer :: nout = 20
|
|
integer :: kcode = 138
|
|
|
|
integer :: jx
|
|
integer :: jy
|
|
integer :: nx
|
|
integer :: ny
|
|
|
|
integer :: j1 = 20
|
|
integer :: j2 = 24
|
|
integer :: j3 = 39
|
|
integer :: j4 = 43
|
|
integer :: rr = 1
|
|
|
|
|
|
real(8) :: pi
|
|
real(8) :: dx
|
|
real(8) :: dy
|
|
real(8) :: amp = 16.0d0
|
|
|
|
real(8), allocatable :: z(:,:)
|
|
|
|
character( 80) :: arg
|
|
character(256) :: fname
|
|
|
|
|
|
call get_command_argument(1,arg)
|
|
read(arg,*) nx
|
|
ny = nx
|
|
|
|
write (*,'("Allocate z(",i4,",",i4,")")') nx,ny
|
|
|
|
allocate(z(nx,ny))
|
|
|
|
pi = 4.0 * atan(1.0d0)
|
|
dx = 2.0d0 * pi / nx
|
|
dy = dx * 2.0d0
|
|
|
|
rr = nx/64
|
|
|
|
do jy = 1 , ny
|
|
do jx = 1 , nx
|
|
! z(jx,jy) = &
|
|
! + 1.1 * cos((jx-1) * dx) &
|
|
! + 0.1 * sin((jy-1) * dx)
|
|
|
|
! z(jx,jy) = 0.0d0
|
|
!
|
|
! z(jx,jy) = cos((jx-1) * dx +(jy-1) * dx)
|
|
! z(jx,jy) = 1.0 * cos((jx-1)*dx) + 3.0 * cos((jx-1)*dx*2.0) &
|
|
! + 10.0 * sin((jy-1) * dy) + 20.0 * sin((jy-1) * dy * 2.0)
|
|
|
|
|
|
|
|
! z(jx,jy) = 0.0d0
|
|
! if (jx > rr*j1-(rr-1) .and. jx < rr*j2-(rr-1)) then
|
|
! z(jx,jy) = amp
|
|
! endif
|
|
! if (jx > rr*j3-(rr-1) .and. jx < rr*j4-(rr-1)) then
|
|
! z(jx,jy) = -amp
|
|
! endif
|
|
! z(jx,jy) = z(jx,jy)*(1 + 0.1*sin((jy-1)*dx))
|
|
|
|
|
|
z(jx,jy) = 0.0d0
|
|
if (jy > rr*j1-(rr-1) .and. jy < rr*j2-(rr-1)) then
|
|
z(jx,jy) = -amp
|
|
endif
|
|
if (jy > rr*j3-(rr-1) .and. jy < rr*j4-(rr-1)) then
|
|
z(jx,jy) = amp
|
|
endif
|
|
z(jx,jy) = z(jx,jy)*(1 + 0.1*sin((jx-1)*dx))
|
|
|
|
|
|
enddo
|
|
enddo
|
|
|
|
! z(nx/2,ny/2) = 2.0
|
|
|
|
call mk_fname(nx,kcode,fname,"GP")
|
|
open(nout,file=fname,form='unformatted')
|
|
write(nout) kcode,0,10101,0,nx,ny,0,0
|
|
write(nout) z
|
|
close(nout)
|
|
stop
|
|
end
|
|
|
|
|
|
! *###########################*
|
|
! * Functions and Subroutines *
|
|
! *###########################*
|
|
|
|
|
|
! ***********************
|
|
! * SUBROUTINE MK_FNAME *
|
|
! ***********************
|
|
subroutine mk_fname(kgx,kcode,fname,gtp)
|
|
|
|
character(2) :: gtp
|
|
character(256) :: fname
|
|
integer :: kcode,kgx
|
|
|
|
if (kgx < 100) then
|
|
write(fname,'(A2,I2.2,"_var",I4.4,".srv")') gtp,kgx,kcode
|
|
elseif (kgx < 1000) then
|
|
write(fname,'(A2,I3.3,"_var",I4.4,".srv")') gtp,kgx,kcode
|
|
else
|
|
write(fname,'(A2,I4.4,"_var",I4.4,".srv")') gtp,kgx,kcode
|
|
endif
|
|
|
|
fname = trim(fname)
|
|
|
|
return
|
|
end subroutine mk_fname
|