module module_restart 2
use module_variables
use module_constants
use module_control,only: RestartFileName,OutputByHour,dt
implicit none
contains

subroutine write_restart(its) 1
integer,intent(IN)  :: its
integer             :: ivl         ! Index for vertical levels
character(80)       :: filename
integer , parameter :: lunrout=31  ! Logical unit for restart output
integer time

if(OutputByHour) then
   time = (its+.5)*dt/3600
else
  time = its
endif
write(filename,"('fim_restart_',i6.6)") time

open (lunrout,file=filename,form='unformatted')

write(lunrout) its,nf,of,vof,ab1,ab2,ab3

write(lunrout) lat,lon,nprox,proxs,proxRestart,area,cs,sn, &
               sidevec_c,sidevec_e,sideln,rprox_ln

write(lunrout) rarea,rsideln,f,deg_lat,deg_lon,rn2d,pw2d

write(lunrout) thetac,dpsig

!write(lunrout) fu ,fv  ,ft ,fqv 
!write(lunrout) fdp,fdpl,ftl,fqvl
!write(lunrout) us3d,vs3d,ws3d,mp3d
!write(lunrout) dp3d,qv3d,th3d,tp3d
!write(lunrout) rh3d,qvpl,ssus
!write(lunrout) ssvs,ssdp,ssth,ssqv
!write(lunrout) qvdp,tpl ,dpl ,vor 
!write(lunrout) pr3d,ex3d,ph3d,sdps

write(lunrout) fu ,fv  ,ftr
write(lunrout) fdp,fdpl,ftrl
write(lunrout) us3d,vs3d,ws3d,mp3d
write(lunrout) dp3d,tr,trdp
write(lunrout) rh3d,trpl,ssus
write(lunrout) ssvs,ssdp,ssth,ssqv
write(lunrout) dpl ,vor 
write(lunrout) pr3d,ex3d,ph3d,sdps

close(lunrout)

return
end subroutine write_restart


subroutine read_restart(its) 1
integer,intent(OUT) :: its
integer             :: ivl        ! Index for vertical levels
integer , parameter :: lunrin =30 ! Logical unit for restart input

open(lunrin,file=RestartFileName,form="unformatted")

read(lunrin) its,nf,of,vof,ab1,ab2,ab3

read(lunrin) lat,lon,nprox,proxs,prox,area,cs,sn, &
             sidevec_c,sidevec_e,sideln,rprox_ln
!SMS$ignore begin
proxRestart = prox
!SMS$ignore end

!SMS$UNSTRUCTURED_GRID(PROX)

read(lunrin) rarea,rsideln,f,deg_lat,deg_lon,rn2d,pw2d

read(lunrin) thetac,dpsig

!read(lunrin) fu ,fv  ,ft ,fqv 
!read(lunrin) fdp,fdpl,ftl,fqvl

!read(lunrin) us3d,vs3d,ws3d,mp3d
!read(lunrin) dp3d,qv3d,th3d,tp3d
!read(lunrin) rh3d,qvpl,ssus
!read(lunrin) ssvs,ssdp,ssth,ssqv
!read(lunrin) qvdp,tpl ,dpl ,vor 

!read(lunrin) pr3d,ex3d,ph3d,sdps

close(lunrin)
its = its + 1

return
end subroutine read_restart

end module module_restart