C $Header: /u/gcmpack/MITgcm/pkg/flt/flt_restart.F,v 1.1 2001/09/13 17:43:56 adcroft Exp $ C $Name: $ #include "FLT_CPPOPTIONS.h" subroutine FLT_RESTART ( I myCurrentIter, I myCurrentTime, I myThid & ) c ================================================================== c SUBROUTINE flt_restart c ================================================================== c c o This routine writes the actual float positions to a local files c that can used as restarts c c ================================================================== c SUBROUTINE flt_restart c ================================================================== c == global variables == #include "EEPARAMS.h" #include "SIZE.h" #include "PARAMS.h" #include "FLT.h" c == routine arguments == INTEGER myCurrentIter, myThid _RL myCurrentTime INTEGER bi, bj, imax parameter(imax=9) c == local variables == integer ip _RL tmp(imax) _RL npart_dist c == end of interface == DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) c c the standard routine mdswritevector can be used here c (1) write actual number floats and time into file c tmp(1) = DBLE(npart_tile(bi,bj)) tmp(2) = DBLE(myCurrentIter) tmp(3) = myCurrentTime tmp(4) = 0. tmp(5) = 0. tmp(6) = max_npart tmp(7) = 0. call MDSWRITEVECTOR(flt_file,64,.false.,'RL',imax,tmp, * bi,bj,1,myCurrentIter,mythid) do ip=1,npart_tile(bi,bj) tmp(1) = npart(ip,bi,bj) tmp(2) = tstart(ip,bi,bj) tmp(3) = xpart(ip,bi,bj) tmp(4) = ypart(ip,bi,bj) tmp(5) = kpart(ip,bi,bj) tmp(6) = kfloat(ip,bi,bj) tmp(7) = iup(ip,bi,bj) tmp(8) = itop(ip,bi,bj) tmp(9) = tend(ip,bi,bj) c c the standard routine mdswritevector can be used here c (2) write float positions into file call MDSWRITEVECTOR(flt_file,64,.false.,'RL',imax,tmp, & bi,bj,ip+1,myCurrentIter,mythid) enddo npart_dist = DBLE(npart_tile(bi,bj)) _GLOBAL_SUM_R8( npart_dist, myThid ) _BARRIER _BEGIN_MASTER( myThid ) if (myProcId .eq. 0) then write(errormessageunit,*) npart_dist,' floats written' endif _END_MASTER( myThid ) _BARRIER ENDDO ENDDO c return end