44 mpp_sync, mpp_pe, mpp_declare_pelist
113 character(len=64) :: fname, tracer_name
114 character(len=6) :: stile_name
115 integer :: isc, iec, jsc, jec, n, nt, nk, ntracers
117 integer :: ks, ntiles
120 character(len=128) :: tracer_longname, tracer_units
122 ntileme =
size(atm(:))
126 if ( use_ncep_sst .or. atm(1)%flagstruct%nudge .or. atm(1)%flagstruct%ncep_ic )
then 127 call mpp_error(note,
'READING FROM SST_RESTART DISABLED')
132 ntiles = mpp_get_ntile_count(fv_domain)
133 if(ntiles == 1 .and. .not. atm(1)%neststruct%nested)
then 134 stile_name =
'.tile1' 143 fname =
'INPUT/fv_tracer.res'//trim(stile_name)//
'.nc' 144 if (file_exist(fname))
then 147 call mpp_error(note,
'==> Warning from fv_read_restart: Expected file '//trim(fname)//
' does not exist')
151 fname =
'INPUT/fv_srf_wnd.res'//trim(stile_name)//
'.nc' 152 if (file_exist(fname))
then 154 atm(n)%flagstruct%srf_init = .true.
156 call mpp_error(note,
'==> Warning from fv_read_restart: Expected file '//trim(fname)//
' does not exist')
157 atm(n)%flagstruct%srf_init = .false.
160 if ( atm(n)%flagstruct%fv_land )
then 162 fname =
'INPUT/mg_drag.res'//trim(stile_name)//
'.nc' 163 if (file_exist(fname))
then 166 call mpp_error(note,
'==> Warning from fv_read_restart: Expected file '//trim(fname)//
' does not exist')
169 fname =
'INPUT/fv_land.res'//trim(stile_name)//
'.nc' 170 if (file_exist(fname))
then 173 call mpp_error(note,
'==> Warning from fv_read_restart: Expected file '//trim(fname)//
' does not exist')
189 integer :: n, ntracers, ntprog, nt, isc, iec, jsc, jec, id_restart
190 character(len=6) :: stile_name
191 character(len=64):: fname, tracer_name
203 ntiles = mpp_get_ntile_count(fv_domain)
204 if(ntiles == 1 .and. .not. atm(1)%neststruct%nested)
then 205 stile_name =
'.tile1' 210 fname =
'fv_tracer.res'//trim(stile_name)//
'.nc' 215 domain=fv_domain, mandatory=.false., tile_count=n)
217 do nt = ntprog+1, ntracers
221 domain=fv_domain, mandatory=.false., tile_count=n)
223 if (file_exist(
'INPUT'//trim(fname)))
then 225 call free_restart_type(tra_restart_r)
227 call mpp_error(note,
'==> Warning from fv_io_read_tracers: Expected file '//trim(fname)//
' does not exist')
238 type(
domain2d),
intent(inout) :: fv_domain
241 character(len=64) :: fname, tracer_name
242 character(len=6) :: stile_name
243 integer :: isc, iec, jsc, jec, n, nt, nk, ntracers, ntprog, ntdiag
244 integer :: isd, ied, jsd, jed
247 integer :: id_restart
251 real,
allocatable:: ak_r(:), bk_r(:)
252 real,
allocatable:: u_r(:,:,:), v_r(:,:,:), pt_r(:,:,:), delp_r(:,:,:)
253 real,
allocatable:: w_r(:,:,:), delz_r(:,:,:), ze0_r(:,:,:)
254 real,
allocatable:: q_r(:,:,:,:), qdiag_r(:,:,:,:)
256 integer npz, npz_rst,
ng 259 npz_rst = atm(1)%flagstruct%npz_rst
260 isc = atm(1)%bd%isc; iec = atm(1)%bd%iec; jsc = atm(1)%bd%jsc; jec = atm(1)%bd%jec
263 isd = isc -
ng; ied = iec +
ng 264 jsd = jsc -
ng; jed = jec +
ng 268 ntprog =
size(atm(1)%q,4)
269 ntdiag =
size(atm(1)%qdiag,4)
270 ntracers = ntprog+ntdiag
276 allocate ( ak_r(npz_rst+1) )
277 allocate ( bk_r(npz_rst+1) )
279 allocate ( u_r(isc:iec, jsc:jec+1,npz_rst) )
280 allocate ( v_r(isc:iec+1,jsc:jec ,npz_rst) )
282 allocate ( pt_r(isc:iec, jsc:jec, npz_rst) )
283 allocate ( delp_r(isc:iec, jsc:jec, npz_rst) )
284 allocate ( q_r(isc:iec, jsc:jec, npz_rst, ntprog) )
285 allocate (qdiag_r(isc:iec, jsc:jec, npz_rst, ntprog+1:ntracers) )
287 if ( (.not.atm(1)%flagstruct%hydrostatic) .and. (.not.atm(1)%flagstruct%make_nh) )
then 288 allocate ( w_r(isc:iec, jsc:jec, npz_rst) )
289 allocate ( delz_r(isc:iec, jsc:jec, npz_rst) )
290 if ( atm(1)%flagstruct%hybrid_z ) &
291 allocate ( ze0_r(isc:iec, jsc:jec, npz_rst+1) )
294 fname =
'fv_core.res.nc' 298 call free_restart_type(fv_restart_r)
301 ntiles = mpp_get_ntile_count(fv_domain)
302 if(ntiles == 1 .and. .not. atm(1)%neststruct%nested)
then 303 stile_name =
'.tile1' 310 fname =
'fv_core.res'//trim(stile_name)//
'.nc' 312 domain=fv_domain, position=north,tile_count=n)
314 domain=fv_domain, position=east,tile_count=n)
315 if (.not.atm(n)%flagstruct%hydrostatic)
then 317 domain=fv_domain, mandatory=.false., tile_count=n)
319 domain=fv_domain, mandatory=.false., tile_count=n)
320 if ( atm(n)%flagstruct%hybrid_z )
then 322 domain=fv_domain, mandatory=.false., tile_count=n)
326 domain=fv_domain, tile_count=n)
328 domain=fv_domain, tile_count=n)
330 domain=fv_domain, tile_count=n)
332 call free_restart_type(fv_tile_restart_r)
333 fname =
'INPUT/fv_srf_wnd.res'//trim(stile_name)//
'.nc' 334 if (file_exist(fname))
then 336 atm(n)%flagstruct%srf_init = .true.
338 call mpp_error(note,
'==> Warning from remap_restart: Expected file '//trim(fname)//
' does not exist')
339 atm(n)%flagstruct%srf_init = .false.
342 if ( atm(n)%flagstruct%fv_land )
then 344 fname =
'INPUT/mg_drag.res'//trim(stile_name)//
'.nc' 345 if (file_exist(fname))
then 348 call mpp_error(note,
'==> Warning from remap_restart: Expected file '//trim(fname)//
' does not exist')
351 fname =
'INPUT/fv_land.res'//trim(stile_name)//
'.nc' 352 if (file_exist(fname))
then 355 call mpp_error(note,
'==> Warning from remap_restart: Expected file '//trim(fname)//
' does not exist')
359 fname =
'fv_tracer.res'//trim(stile_name)//
'.nc' 360 if (file_exist(
'INPUT'//trim(fname)))
then 365 domain=fv_domain, mandatory=.false., tile_count=n)
367 do nt = ntprog+1, ntracers
371 domain=fv_domain, mandatory=.false., tile_count=n)
374 call free_restart_type(tra_restart_r)
376 call mpp_error(note,
'==> Warning from remap_restart: Expected file '//trim(fname)//
' does not exist')
379 call rst_remap(npz_rst, npz, isc, iec, jsc, jec, isd, ied, jsd, jed, ntracers, ntprog, &
380 delp_r, u_r, v_r, w_r, delz_r, pt_r, q_r, qdiag_r,&
381 atm(n)%delp, atm(n)%u, atm(n)%v, atm(n)%w, atm(n)%delz, atm(n)%pt, atm(n)%q, &
382 atm(n)%qdiag, ak_r, bk_r, atm(n)%ptop, atm(n)%ak, atm(n)%bk, &
383 atm(n)%flagstruct%hydrostatic, atm(n)%flagstruct%make_nh, atm(n)%domain, &
384 atm(n)%gridstruct%square_domain)
394 deallocate( qdiag_r )
396 if ( (.not.atm(1)%flagstruct%hydrostatic) .and. (.not.atm(1)%flagstruct%make_nh) )
then 398 deallocate ( delz_r )
399 if ( atm(1)%flagstruct%hybrid_z )
deallocate ( ze0_r )
413 character(len=64) :: fname
414 integer :: id_restart
417 call mpp_error(note,
'READING FROM SST_restart DISABLED')
438 character(len=64) :: fname, tracer_name
439 character(len=6) :: gn, stile_name
440 integer :: id_restart
441 integer :: n, nt, ntracers, ntprog, ntdiag, ntileme, ntiles
443 ntileme =
size(atm(:))
444 ntprog =
size(atm(1)%q,4)
445 ntdiag =
size(atm(1)%qdiag,4)
446 ntracers = ntprog+ntdiag
449 if (atm(1)%grid_number > 1)
then 450 write(gn,
'(A4, I2.2)')
"nest", atm(1)%grid_number
454 call set_filename_appendix(gn)
457 ntiles = mpp_get_ntile_count(fv_domain)
458 if(ntiles == 1 .and. .not. atm(1)%neststruct%nested)
then 459 stile_name =
'.tile1' 466 call mpp_error(note,
'READING FROM SST_RESTART DISABLED')
474 fname =
'fv_core.res.nc' 479 fname =
'fv_core.res'//trim(stile_name)//
'.nc' 481 domain=fv_domain, position=north,tile_count=n)
483 domain=fv_domain, position=east,tile_count=n)
484 if (.not.atm(n)%flagstruct%hydrostatic)
then 486 domain=fv_domain, mandatory=.false., tile_count=n)
488 domain=fv_domain, mandatory=.false., tile_count=n)
489 if ( atm(n)%flagstruct%hybrid_z )
then 491 domain=fv_domain, mandatory=.false., tile_count=n)
495 domain=fv_domain, tile_count=n)
497 domain=fv_domain, tile_count=n)
499 domain=fv_domain, tile_count=n)
502 if (atm(n)%flagstruct%agrid_vel_rst)
then 504 domain=fv_domain, tile_count=n, mandatory=.false.)
506 domain=fv_domain, tile_count=n, mandatory=.false.)
509 fname =
'fv_srf_wnd.res'//trim(stile_name)//
'.nc' 511 domain=fv_domain, tile_count=n)
513 domain=fv_domain, tile_count=n)
516 domain=fv_domain, tile_count=n)
519 if ( atm(n)%flagstruct%fv_land )
then 522 fname =
'mg_drag.res'//trim(stile_name)//
'.nc' 524 domain=fv_domain, tile_count=n)
526 fname =
'fv_land.res'//trim(stile_name)//
'.nc' 528 domain=fv_domain, tile_count=n)
531 fname =
'fv_tracer.res'//trim(stile_name)//
'.nc' 537 domain=fv_domain, mandatory=.false., tile_count=n)
539 do nt = ntprog+1, ntracers
544 domain=fv_domain, mandatory=.false., tile_count=n)
563 logical,
intent(IN) :: grids_on_this_pe(:)
564 character(len=*),
optional,
intent(in) :: timestamp
565 integer :: n, ntileme
567 ntileme =
size(atm(:))
569 if ( use_ncep_sst .or. atm(1)%flagstruct%nudge .or. atm(1)%flagstruct%ncep_ic )
then 570 call mpp_error(note,
'READING FROM SST_RESTART DISABLED')
575 if (.not. grids_on_this_pe(n)) cycle
577 if ( (use_ncep_sst .or. atm(n)%flagstruct%nudge) .and. .not. atm(n)%gridstruct%nested )
then 578 call save_restart(atm(n)%SST_restart, timestamp)
581 call save_restart(atm(n)%Fv_restart, timestamp)
582 call save_restart(atm(n)%Fv_tile_restart, timestamp)
583 call save_restart(atm(n)%Rsf_restart, timestamp)
585 if ( atm(n)%flagstruct%fv_land )
then 586 call save_restart(atm(n)%Mg_restart, timestamp)
587 call save_restart(atm(n)%Lnd_restart, timestamp)
590 call save_restart(atm(n)%Tra_restart, timestamp)
596 subroutine register_bcs_2d(Atm, BCfile_ne, BCfile_sw, fname_ne, fname_sw, &
597 var_name, var, var_bc, istag, jstag)
598 type(fv_atmos_type),
intent(in) :: Atm
599 type(restart_file_type),
intent(inout) :: BCfile_ne, BCfile_sw
600 character(len=120),
intent(in) :: fname_ne, fname_sw
601 character(len=*),
intent(in) :: var_name
602 real,
dimension(:,:),
intent(in),
optional :: var
603 type(fv_nest_BC_type_3D),
intent(in),
optional :: var_bc
604 integer,
intent(in),
optional :: istag, jstag
606 integer :: npx, npy, i_stag, j_stag
607 integer :: is, ie, js, je, isd, ied, jsd, jed, n
608 integer :: x_halo, y_halo, x_halo_ns, id_restart
609 integer :: layout(2), global_size(2), indices(4)
610 integer,
allocatable,
dimension(:) :: x1_pelist, y1_pelist
611 integer,
allocatable,
dimension(:) :: x2_pelist, y2_pelist
612 logical :: is_root_pe
616 if (
present(istag)) i_stag = i_stag
617 if (
present(jstag)) j_stag = j_stag
622 allocate (x1_pelist(layout(1)))
623 allocate (y1_pelist(layout(2)))
624 allocate (x2_pelist(layout(1)))
625 allocate (y2_pelist(layout(2)))
630 y1_pelist(n)=mpp_root_pe()+layout(1)*n-1
631 y2_pelist(n)=mpp_root_pe()+layout(1)*(n-1)
635 x1_pelist(n)=mpp_root_pe()+layout(1)*(layout(2)-1)+(n-1)
636 x2_pelist(n)=mpp_root_pe()+(n-1)
639 call mpp_declare_pelist(x1_pelist)
640 call mpp_declare_pelist(x2_pelist)
641 call mpp_declare_pelist(y1_pelist)
642 call mpp_declare_pelist(y2_pelist)
649 indices(4) = jed+j_stag
650 global_size(1) = x_halo
651 global_size(2) = npy-1+2*y_halo+j_stag
655 if (is.eq.1 .and. js.eq.1) is_root_pe = .true.
658 trim(var_name)//
'_west_t1', &
660 indices, global_size, y2_pelist, &
661 is_root_pe, jshift=y_halo)
664 trim(var_name)//
'_west', &
665 var, indices, global_size, &
666 y2_pelist, is_root_pe, jshift=y_halo)
670 if (ie.eq.npx-1 .and. je.eq.npy-1) is_root_pe = .true.
673 trim(var_name)//
'_east_t1', &
675 indices, global_size, y1_pelist, &
676 is_root_pe, jshift=y_halo)
679 indices(1) = ied-x_halo+1+i_stag
680 indices(2) = ied+i_stag
683 trim(var_name)//
'_east', &
684 var, indices, global_size, &
685 y1_pelist, is_root_pe, jshift=y_halo, &
686 x_halo=(
size(var,1)-x_halo), ishift=-(ie+i_stag))
691 indices(2) = ied+i_stag
694 global_size(1) = npx-1+i_stag
695 global_size(2) = y_halo
697 if (is.eq.1) indices(1) = is
698 if (ie.eq.npx-1) indices(2) = ie+i_stag
700 if (is.eq.1) x_halo_ns=x_halo
704 if (is.eq.1 .and. js.eq.1) is_root_pe = .true.
707 trim(var_name)//
'_south_t1', &
709 indices, global_size, x2_pelist, &
710 is_root_pe, x_halo=x_halo_ns)
713 trim(var_name)//
'_south', &
714 var, indices, global_size, &
715 x2_pelist, is_root_pe, x_halo=x_halo_ns)
719 if (ie.eq.npx-1 .and. je.eq.npy-1) is_root_pe = .true.
722 trim(var_name)//
'_north_t1', &
724 indices, global_size, x1_pelist, &
725 is_root_pe, x_halo=x_halo_ns)
728 indices(3) = jed-y_halo+1+j_stag
729 indices(4) = jed+j_stag
732 trim(var_name)//
'_north', &
733 var, indices, global_size, &
734 x1_pelist, is_root_pe, x_halo=x_halo_ns, &
735 y_halo=(
size(var,2)-y_halo), jshift=-(je+j_stag))
740 subroutine register_bcs_3d(Atm, BCfile_ne, BCfile_sw, fname_ne, fname_sw, &
741 var_name, var, var_bc, istag, jstag, mandatory)
742 type(fv_atmos_type),
intent(in) :: Atm
743 type(restart_file_type),
intent(inout) :: BCfile_ne, BCfile_sw
744 character(len=120),
intent(in) :: fname_ne, fname_sw
745 character(len=*),
intent(in) :: var_name
746 real,
dimension(:,:,:),
intent(in),
optional :: var
747 type(fv_nest_BC_type_3D),
intent(in),
optional :: var_bc
748 integer,
intent(in),
optional :: istag, jstag
749 logical,
intent(IN),
optional :: mandatory
751 integer :: npx, npy, i_stag, j_stag
752 integer :: is, ie, js, je, isd, ied, jsd, jed, n
753 integer :: x_halo, y_halo, x_halo_ns, id_restart
754 integer :: layout(2), global_size(3), indices(4)
755 integer,
allocatable,
dimension(:) :: x1_pelist, y1_pelist
756 integer,
allocatable,
dimension(:) :: x2_pelist, y2_pelist
757 logical :: is_root_pe
761 if (
present(istag)) i_stag = istag
762 if (
present(jstag)) j_stag = jstag
767 allocate (x1_pelist(layout(1)))
768 allocate (y1_pelist(layout(2)))
769 allocate (x2_pelist(layout(1)))
770 allocate (y2_pelist(layout(2)))
775 y1_pelist(n)=mpp_root_pe()+layout(1)*n-1
776 y2_pelist(n)=mpp_root_pe()+layout(1)*(n-1)
780 x1_pelist(n)=mpp_root_pe()+layout(1)*(layout(2)-1)+(n-1)
781 x2_pelist(n)=mpp_root_pe()+(n-1)
784 call mpp_declare_pelist(x1_pelist)
785 call mpp_declare_pelist(x2_pelist)
786 call mpp_declare_pelist(y1_pelist)
787 call mpp_declare_pelist(y2_pelist)
794 indices(4) = jed + j_stag
795 global_size(1) = x_halo
796 global_size(2) = npy-1+2*y_halo + j_stag
797 global_size(3) = atm%npz
801 if (is.eq.1 .and. js.eq.1) is_root_pe = .true.
804 trim(var_name)//
'_west_t1', &
806 indices, global_size, y2_pelist, &
807 is_root_pe, jshift=y_halo, mandatory=mandatory)
810 trim(var_name)//
'_west', &
811 var, indices, global_size, &
812 y2_pelist, is_root_pe, jshift=y_halo, mandatory=mandatory)
816 if (ie.eq.npx-1 .and. je.eq.npy-1) is_root_pe = .true.
819 trim(var_name)//
'_east_t1', &
821 indices, global_size, y1_pelist, &
822 is_root_pe, jshift=y_halo, mandatory=mandatory)
825 indices(1) = ied-x_halo+1+i_stag
826 indices(2) = ied+i_stag
829 trim(var_name)//
'_east', &
830 var, indices, global_size, &
831 y1_pelist, is_root_pe, jshift=y_halo, &
832 x_halo=(
size(var,1)-x_halo), ishift=-(ie+i_stag), mandatory=mandatory)
837 indices(2) = ied+i_stag
840 global_size(1) = npx-1+i_stag
841 global_size(2) = y_halo
842 global_size(3) = atm%npz
844 if (is.eq.1) indices(1) = is
845 if (ie.eq.npx-1) indices(2) = ie+i_stag
847 if (is.eq.1) x_halo_ns=x_halo
851 if (is.eq.1 .and. js.eq.1) is_root_pe = .true.
854 trim(var_name)//
'_south_t1', &
856 indices, global_size, x2_pelist, &
857 is_root_pe, x_halo=x_halo_ns, mandatory=mandatory)
860 trim(var_name)//
'_south', &
861 var, indices, global_size, &
862 x2_pelist, is_root_pe, x_halo=x_halo_ns, mandatory=mandatory)
866 if (ie.eq.npx-1 .and. je.eq.npy-1) is_root_pe = .true.
869 trim(var_name)//
'_north_t1', &
871 indices, global_size, x1_pelist, &
872 is_root_pe, x_halo=x_halo_ns, mandatory=mandatory)
875 indices(3) = jed-y_halo+1+j_stag
876 indices(4) = jed+j_stag
879 trim(var_name)//
'_north', &
880 var, indices, global_size, &
881 x1_pelist, is_root_pe, x_halo=x_halo_ns, &
882 y_halo=(
size(var,2)-y_halo), jshift=-(je+j_stag), mandatory=mandatory)
893 integer :: n, ntracers, ntprog, ntdiag
894 character(len=120) :: tname, fname_ne, fname_sw
896 fname_ne =
'fv_BC_ne.res.nc' 897 fname_sw =
'fv_BC_sw.res.nc' 900 ntdiag=
size(atm%qdiag,4)
901 ntracers=ntprog+ntdiag
905 call register_bcs_2d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
906 fname_ne, fname_sw,
'phis', var=atm%phis)
907 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
908 fname_ne, fname_sw,
'delp', atm%delp, atm%neststruct%delp_BC)
911 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
912 fname_ne, fname_sw, trim(tname), atm%q(:,:,:,n), atm%neststruct%q_BC(n), mandatory=.false.)
914 do n=ntprog+1,ntracers
916 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
917 fname_ne, fname_sw, trim(tname), var=atm%qdiag(:,:,:,n), mandatory=.false.)
920 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
921 fname_ne, fname_sw,
'pt', atm%pt, atm%neststruct%pt_BC)
922 if ((.not.atm%flagstruct%hydrostatic) .and. (.not.atm%flagstruct%make_nh))
then 923 if (is_master()) print*,
'fv_io_register_restart_BCs: REGISTERING NH BCs', atm%flagstruct%hydrostatic, atm%flagstruct%make_nh
924 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
925 fname_ne, fname_sw,
'w', atm%w, atm%neststruct%w_BC, mandatory=.false.)
926 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
927 fname_ne, fname_sw,
'delz', atm%delz, atm%neststruct%delz_BC, mandatory=.false.)
930 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
931 fname_ne, fname_sw,
'q_con', var_bc=atm%neststruct%q_con_BC, mandatory=.false.)
933 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
934 fname_ne, fname_sw,
'cappa', var_bc=atm%neststruct%cappa_BC, mandatory=.false.)
938 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
939 fname_ne, fname_sw,
'u', atm%u, atm%neststruct%u_BC, jstag=1)
940 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
941 fname_ne, fname_sw,
'v', atm%v, atm%neststruct%v_BC, istag=1)
942 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
943 fname_ne, fname_sw,
'uc', var_bc=atm%neststruct%uc_BC, istag=1)
944 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
945 fname_ne, fname_sw,
'vc', var_bc=atm%neststruct%vc_BC, jstag=1)
946 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
947 fname_ne, fname_sw,
'divg', var_bc=atm%neststruct%divg_BC, istag=1,jstag=1, mandatory=.false.)
948 atm%neststruct%divg_BC%initialized =
field_exist(fname_ne,
'divg_north_t1', atm%domain)
959 character(len=120) :: tname, fname_ne, fname_sw
961 fname_ne =
'fv_BC_ne.res.nc' 962 fname_sw =
'fv_BC_sw.res.nc' 966 if (is_master()) print*,
'fv_io_register_restart_BCs_NH: REGISTERING NH BCs', atm%flagstruct%hydrostatic, atm%flagstruct%make_nh
968 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
969 fname_ne, fname_sw,
'w', atm%w, atm%neststruct%w_BC)
970 call register_bcs_3d(atm, atm%neststruct%BCfile_ne, atm%neststruct%BCfile_sw, &
971 fname_ne, fname_sw,
'delz', atm%delz, atm%neststruct%delz_BC)
980 character(len=*),
intent(in),
optional :: timestamp
982 call save_restart_border(atm%neststruct%BCfile_ne, timestamp)
983 call save_restart_border(atm%neststruct%BCfile_sw, timestamp)
992 call restore_state_border(atm%neststruct%BCfile_ne)
993 call restore_state_border(atm%neststruct%BCfile_sw)
subroutine, public set_domain(Domain2)
integer, parameter, public model_atmos
subroutine, public fv_io_register_restart(fv_domain, Atm)
subroutine, public free_restart_type(fileObj)
subroutine register_bcs_2d(Atm, BCfile_ne, BCfile_sw, fname_ne, fname_sw, var_name, var, var_bc, istag, jstag)
subroutine, public fv_io_register_restart_bcs_nh(Atm)
subroutine, public fv_io_read_restart(fv_domain, Atm)
subroutine, public set_eta(km, ks, ptop, ak, bk)
subroutine, public fv_io_register_restart_bcs(Atm)
subroutine, public get_number_tracers(model, num_tracers, num_prog, num_diag, num_family)
subroutine, public fv_io_init()
subroutine, public set_filename_appendix(string_in)
int field_exist(const char *file, const char *name)
subroutine, public set_tracer_profile(model, n, tracer, err_msg)
integer, parameter, public ng
subroutine, public nullify_domain()
subroutine, public rst_remap(km, kn, is, ie, js, je, isd, ied, jsd, jed, nq, ntp, delp_r, u_r, v_r, w_r, delz_r, pt_r, q_r, qdiag_r, delp, u, v, w, delz, pt, q, qdiag, ak_r, bk_r, ptop, ak, bk, hydrostatic, make_nh, domain, square_domain)
subroutine, public save_restart_border(fileObj, time_stamp, directory)
subroutine, public fv_io_read_bcs(Atm)
subroutine, public fv_io_register_nudge_restart(Atm)
subroutine, public restore_state_border(fileObj, directory, nonfatal_missing_files)
subroutine, public fv_io_exit
subroutine, public fv_io_write_bcs(Atm, timestamp)
subroutine register_bcs_3d(Atm, BCfile_ne, BCfile_sw, fname_ne, fname_sw, var_name, var, var_bc, istag, jstag, mandatory)
subroutine, public fms_io_exit()
logical module_is_initialized
subroutine, public get_tile_string(str_out, str_in, tile, str2_in)
subroutine, public get_tracer_names(model, n, name, longname, units, err_msg)
subroutine, public fv_io_read_tracers(fv_domain, Atm)
subroutine, public fv_io_write_restart(Atm, grids_on_this_pe, timestamp)
subroutine, public get_instance_filename(name_in, name_out)
subroutine, public remap_restart(fv_domain, Atm)
logical function, public field_exist(file_name, field_name, domain, no_domain)
subroutine, public save_restart(fileObj, time_stamp, directory, append, time_level)