This subroutine writes to an output file all of the accelerations that have been applied to a column of zonal velocities over the previous timestep. This subroutine is called from vertvisc. 
  100   integer,                     
intent(in) :: i
   101   integer,                     
intent(in) :: j
   104   type(verticalgrid_type),     
intent(in) :: gv
   105   real, 
dimension(SZIB_(G),SZJ_(G),SZK_(G)), &
   107   real, 
dimension(SZI_(G),SZJ_(G),SZK_(G)),  &
   109   type(accel_diag_ptrs),       
intent(in) :: adp
   111   type(cont_diag_ptrs),        
intent(in) :: cdp
   113   real,                        
intent(in) :: dt
   114   type(pointaccel_cs),         
pointer    :: cs
   116   real,                        
intent(in) :: maxvel, minvel
   117   real, 
optional,              
intent(in) :: str
   119   real, 
dimension(SZIB_(G),SZK_(G)),         &
   120                      optional, 
intent(in) :: a
   122   real, 
dimension(SZIB_(G),SZK_(G)),         &
   123                      optional, 
intent(in) :: hv
   152   real    :: inorm(szk_(g))
   154   integer :: yr, mo, day, hr, minute, sec, yearday
   157   logical :: do_k(szk_(g)+1)
   158   logical :: prev_avail
   161   angstrom = gv%Angstrom + gv%H_subroundoff
   165   if (cs%cols_written < cs%max_writes) 
then   166     cs%cols_written = cs%cols_written + 1
   172     if (cs%u_file < 0) 
then   173       if (len_trim(cs%u_trunc_file) < 1) 
return   174       call open_file(cs%u_file, trim(cs%u_trunc_file), action=append_file, &
   175                      form=ascii_file, threading=multiple, fileset=single_file)
   176       if (cs%u_file < 0) 
then   177         call mom_error(note, 
'Unable to open file '//trim(cs%u_trunc_file)//
'.')
   183     prev_avail = (
associated(cs%u_prev) .and. 
associated(cs%v_prev))
   187       if (((max(cs%u_av(i,j,k),um(i,j,k)) >= maxvel) .or. &
   188            (min(cs%u_av(i,j,k),um(i,j,k)) <= minvel)) .and. &
   189           ((hin(i,j,k) + hin(i+1,j,k)) > 3.0*angstrom)) 
exit   193       if (((max(cs%u_av(i,j,k), um(i,j,k)) >= maxvel) .or. &
   194            (min(cs%u_av(i,j,k), um(i,j,k)) <= minvel)) .and. &
   195           ((hin(i,j,k) + hin(i+1,j,k)) > 3.0*angstrom)) 
exit   199       ks = 1; ke = nz; 
write(file,
'("U: Unable to set ks & ke.")')
   202     call get_date(cs%Time, yr, mo, day, hr, minute, sec)
   203     call get_time((cs%Time - set_date(yr, 1, 1, 0, 0, 0)), sec, yearday)
   204     write (file,
'(/,"--------------------------")')
   205     write (file,
'(/,"Time ",i5,i4,F6.2," U-velocity violation at ",I4,": ",2(I3), &   206         & " (",F7.2," E "F7.2," N) Layers ",I3," to ",I3,". dt = ",1PG10.4)') &
   207         yr, yearday, (
REAL(sec)/3600.0), pe_here(), i, j, &
   208         g%geoloncu(i,j), g%geolatcu(i,j), ks, ke, dt
   210     if (ks <= gv%nk_rho_varies) ks = 1
   212       if ((hin(i,j,k) + hin(i+1,j,k)) > 3.0*angstrom) do_k(k) = .true.
   215     write(file,
'(/,"Layers:",$)')
   216     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(I10," ",$)') (k);
 enddo   217     write(file,
'(/,"u(m):  ",$)')
   218     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (um(i,j,k));
 enddo   220       write(file,
'(/,"u(mp): ",$)')
   221       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (cs%u_prev(i,j,k));
 enddo   223     write(file,
'(/,"u(3):  ",$)')
   224     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (cs%u_av(i,j,k));
 enddo   226     write(file,
'(/,"CFL u: ",$)')
   227     do k=ks,ke ; 
if (do_k(k)) 
then   228       cfl = abs(um(i,j,k)) * dt * g%dy_Cu(i,j)
   229       if (um(i,j,k) < 0.0) 
then ; cfl = cfl * g%IareaT(i+1,j)
   230       else ; cfl = cfl * g%IareaT(i,j) ;
 endif   231       write(file,
'(ES10.3," ",$)') cfl
   233     write(file,
'(/,"CFL0 u:",$)')
   234     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   235                                     abs(um(i,j,k)) * dt * g%IdxCu(i,j) ;
 enddo   238       write(file,
'(/,"du:    ",$)')
   239       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   240                                       ((um(i,j,k)-cs%u_prev(i,j,k)));
 enddo   242     write(file,
'(/,"CAu:   ",$)')
   243     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (dt*adp%CAu(i,j,k));
 enddo   244     write(file,
'(/,"PFu:   ",$)')
   245     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (dt*adp%PFu(i,j,k));
 enddo   246     write(file,
'(/,"diffu: ",$)')
   247     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (dt*adp%diffu(i,j,k));
 enddo   249     if (
ASSOCIATED(adp%gradKEu)) 
then   250       write(file,
'(/,"KEu:   ",$)')
   251       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   252                                       (dt*adp%gradKEu(i,j,k));
 enddo   254     if (
ASSOCIATED(adp%rv_x_v)) 
then   255       write(file,
'(/,"Coru:  ",$)')
   256       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   257           dt*(adp%CAu(i,j,k)-adp%rv_x_v(i,j,k));
 enddo   259     if (
ASSOCIATED(adp%du_dt_visc)) 
then   260       write(file,
'(/,"ubv:   ",$)')
   261       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   262           (um(i,j,k)-dt*adp%du_dt_visc(i,j,k));
 enddo   263       write(file,
'(/,"duv:   ",$)')
   264       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   265                                       (dt*adp%du_dt_visc(i,j,k));
 enddo   267     if (
ASSOCIATED(adp%du_other)) 
then   268       write(file,
'(/,"du_other: ",$)')
   269       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   270                                       (adp%du_other(i,j,k));
 enddo   273       write(file,
'(/,"a:     ",$)')
   274       do k=ks,ke+1 ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') a(i,k);
 enddo   276     if (
present(hv)) 
then   277       write(file,
'(/,"hvel:  ",$)')
   278       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') hv(i,k);
 enddo   280     write(file,
'(/,"Stress:  ",ES10.3)') str
   282     if (
ASSOCIATED(cs%u_accel_bt)) 
then   283       write(file,
'("dubt:  ",$)')
   284       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   285                                       (dt*cs%u_accel_bt(i,j,k)) ;
 enddo   289     write(file,
'(/,"h--:   ",$)')
   290     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (hin(i,j-1,k));
 enddo   291     write(file,
'(/,"h+-:   ",$)')
   292     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (hin(i+1,j-1,k));
 enddo   293     write(file,
'(/,"h-0:   ",$)')
   294     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (hin(i,j,k));
 enddo   295     write(file,
'(/,"h+0:   ",$)')
   296     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (hin(i+1,j,k));
 enddo   297     write(file,
'(/,"h-+:   ",$)')
   298     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (hin(i,j+1,k));
 enddo   299     write(file,
'(/,"h++:   ",$)')
   300     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (hin(i+1,j+1,k));
 enddo   303     e(nz+1) = -g%bathyT(i,j)
   304     do k=nz,1,-1 ; e(k) = e(k+1) + hin(i,j,k) ;
 enddo   305     write(file,
'(/,"e-:    ",$)')
   306     write(file,
'(ES10.3," ",$)') e(ks)
   307     do k=ks+1,ke+1 ; 
if (do_k(k-1)) 
write(file,
'(ES10.3," ",$)') e(k);
 enddo   309     e(nz+1) = -g%bathyT(i+1,j)
   310     do k=nz,1,-1 ; e(k) = e(k+1) + hin(i+1,j,k) ;
 enddo   311     write(file,
'(/,"e+:    ",$)')
   312     write(file,
'(ES10.3," ",$)') e(ks)
   313     do k=ks+1,ke+1 ; 
if (do_k(k-1)) 
write(file,
'(ES10.3," ",$)') e(k) ;
 enddo   314     if (
ASSOCIATED(cs%T)) 
then   315       write(file,
'(/,"T-:    ",$)')
   316       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') cs%T(i,j,k);
 enddo   317       write(file,
'(/,"T+:    ",$)')
   318       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') cs%T(i+1,j,k);
 enddo   320     if (
ASSOCIATED(cs%S)) 
then   321       write(file,
'(/,"S-:    ",$)')
   322       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') cs%S(i,j,k);
 enddo   323       write(file,
'(/,"S+:    ",$)')
   324       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') cs%S(i+1,j,k);
 enddo   328       write(file,
'(/,"v--:   ",$)')
   329       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (cs%v_prev(i,j-1,k));
 enddo   330       write(file,
'(/,"v-+:   ",$)')
   331       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (cs%v_prev(i,j,k));
 enddo   332       write(file,
'(/,"v+-:   ",$)')
   333       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (cs%v_prev(i+1,j-1,k));
 enddo   334       write(file,
'(/,"v++:   ",$)')
   335       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') (cs%v_prev(i+1,j,k));
 enddo   338     write(file,
'(/,"vh--:  ",$)')
   339     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   340                                     (cdp%vh(i,j-1,k)*g%IdxCv(i,j-1));
 enddo   341     write(file,
'(/," vhC--:",$)')
   342     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   343                         (0.5*cs%v_av(i,j-1,k)*(hin(i,j-1,k) + hin(i,j,k)));
 enddo   345       write(file,
'(/," vhCp--:",$)')
   346       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   347                           (0.5*cs%v_prev(i,j-1,k)*(hin(i,j-1,k) + hin(i,j,k)));
 enddo   350     write(file,
'(/,"vh-+:  ",$)')
   351     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   352                                     (cdp%vh(i,j,k)*g%IdxCv(i,j));
 enddo   353     write(file,
'(/," vhC-+:",$)')
   354     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   355                         (0.5*cs%v_av(i,j,k)*(hin(i,j,k) + hin(i,j+1,k)));
 enddo   357       write(file,
'(/," vhCp-+:",$)')
   358       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   359                           (0.5*cs%v_prev(i,j,k)*(hin(i,j,k) + hin(i,j+1,k)));
 enddo   362     write(file,
'(/,"vh+-:  ",$)')
   363     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   364                                       (cdp%vh(i+1,j-1,k)*g%IdxCv(i+1,j-1));
 enddo   365     write(file,
'(/," vhC+-:",$)')
   366     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   367                     (0.5*cs%v_av(i+1,j-1,k)*(hin(i+1,j-1,k) + hin(i+1,j,k)));
 enddo   369       write(file,
'(/," vhCp+-:",$)')
   370       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   371                       (0.5*cs%v_prev(i+1,j-1,k)*(hin(i+1,j-1,k) + hin(i+1,j,k)));
 enddo   374     write(file,
'(/,"vh++:  ",$)')
   375     do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   376                           (cdp%vh(i+1,j,k)*g%IdxCv(i+1,j));
 enddo   377     write(file,
'(/," vhC++:",$)')
   378          do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   379                      (0.5*cs%v_av(i+1,j,k)*(hin(i+1,j,k) + hin(i+1,j+1,k)));
 enddo   381       write(file,
'(/," vhCp++:",$)')
   382            do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(ES10.3," ",$)') &
   383                        (0.5*cs%v_av(i+1,j,k)*(hin(i+1,j,k) + hin(i+1,j+1,k)));
 enddo   386     write(file,
'(/,"D:     ",2(ES10.3))') g%bathyT(i,j),g%bathyT(i+1,j)
   391         du = um(i,j,k)-cs%u_prev(i,j,k)
   392         if (abs(du) < 1.0e-6) du = 1.0e-6
   396       write(file,
'(2/,"Norm:  ",$)')
   397       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') (1.0/inorm(k));
 enddo   399       write(file,
'(/,"du:    ",$)')
   400       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') &
   401                         ((um(i,j,k)-cs%u_prev(i,j,k))*inorm(k));
 enddo   403       write(file,
'(/,"CAu:   ",$)')
   404       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') &
   405                                       (dt*adp%CAu(i,j,k)*inorm(k));
 enddo   407       write(file,
'(/,"PFu:   ",$)')
   408       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') &
   409                                       (dt*adp%PFu(i,j,k)*inorm(k));
 enddo   411       write(file,
'(/,"diffu: ",$)')
   412       do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') &
   413                                       (dt*adp%diffu(i,j,k)*inorm(k));
 enddo   415       if (
ASSOCIATED(adp%gradKEu)) 
then   416         write(file,
'(/,"KEu:   ",$)')
   417         do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') &
   418                                         (dt*adp%gradKEu(i,j,k)*inorm(k));
 enddo   420       if (
ASSOCIATED(adp%rv_x_v)) 
then   421         write(file,
'(/,"Coru:  ",$)')
   422         do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') &
   423             dt*(adp%CAu(i,j,k)-adp%rv_x_v(i,j,k))*inorm(k);
 enddo   425       if (
ASSOCIATED(adp%du_dt_visc)) 
then   426         write(file,
'(/,"duv:   ",$)')
   427         do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') &
   428             (dt*adp%du_dt_visc(i,j,k))*inorm(k);
 enddo   430       if (
ASSOCIATED(adp%du_other)) 
then   431         write(file,
'(/,"du_other: ",$)')
   432         do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') &
   433             (adp%du_other(i,j,k))*inorm(k);
 enddo   435       if (
ASSOCIATED(cs%u_accel_bt)) 
then   436         write(file,
'(/,"dubt:  ",$)')
   437         do k=ks,ke ; 
if (do_k(k)) 
write(file,
'(F10.6," ",$)') &
   438                                         (dt*cs%u_accel_bt(i,j,k)*inorm(k)) ;
 enddo Ocean grid type. See mom_grid for details.