280 const std::string
nt_name =
"ocean_time";
281 const std::string
ndim_name =
"num_geo_dimensions";
283 const std::string
flev_name =
"FINEST_LEVEL";
285 const std::string
nx_name =
"NX";
286 const std::string
ny_name =
"NY";
287 const std::string
nz_name =
"NZ";
304 ncf.enter_def_mode();
305 ncf.put_attr(
"title",
"REMORA data ");
335 ncf.var(
"probLo").put_attr(
"long_name",
"Low side of problem domain in internal AMReX grid");
336 ncf.var(
"probLo").put_attr(
"units",
"meter");
338 ncf.var(
"probHi").put_attr(
"long_name",
"High side of problem domain in internal AMReX grid");
339 ncf.var(
"probHi").put_attr(
"units",
"meter");
342 ncf.var(
"Geom.smallend").put_attr(
"long_name",
"Low side of problem domain in index space");
344 ncf.var(
"Geom.bigend").put_attr(
"long_name",
"High side of problem domain in index space");
346 ncf.var(
"CellSize").put_attr(
"long_name",
"Cell size on internal AMReX grid");
347 ncf.var(
"CellSize").put_attr(
"units",
"meter");
350 ncf.var(
"theta_s").put_attr(
"long_name",
"S-coordinate surface control parameter");
352 ncf.var(
"theta_b").put_attr(
"long_name",
"S-coordinate bottom control parameter");
354 ncf.var(
"hc").put_attr(
"long_name",
"S-coordinate parameter, critical depth");
355 ncf.var(
"hc").put_attr(
"units",
"meter");
358 ncf.var(
"grid").put_attr(
"cf_role",
"grid_topology");
359 ncf.var(
"grid").put_attr(
"topology_dimension",std::vector({2}));
360 ncf.var(
"grid").put_attr(
"node_dimensions",
"xi_psi eta_psi");
361 ncf.var(
"grid").put_attr(
"face_dimensions",
"xi_rho: xi_psi (padding: both) eta_rho: eta_psi (padding: both)");
362 ncf.var(
"grid").put_attr(
"edge1_dimensions",
"xi_u: xi_psi eta_u: eta_psi (padding: both)");
363 ncf.var(
"grid").put_attr(
"edge2_dimensions",
"xi_v: xi_psi (padding: both) eta_v: eta_psi");
364 ncf.var(
"grid").put_attr(
"node_coordinates",
"x_psi y_psi");
365 ncf.var(
"grid").put_attr(
"face_coordinates",
"x_rho y_rho");
366 ncf.var(
"grid").put_attr(
"edge1_coordinates",
"x_u y_u");
367 ncf.var(
"grid").put_attr(
"edge2_coordinates",
"x_v y_v");
368 ncf.var(
"grid").put_attr(
"vertical_dimensions",
"s_rho: s_w (padding: none)");
371 ncf.var(
"s_rho").put_attr(
"long_name",
"S-coordinate at RHO-points");
372 ncf.var(
"s_rho").put_attr(
"field",
"s_rho, scalar");
375 ncf.var(
"s_w").put_attr(
"long_name",
"S-coordinate at W-points");
376 ncf.var(
"s_w").put_attr(
"field",
"s_w, scalar");
379 ncf.var(
"pm").put_attr(
"long_name",
"curvilinear coordinate metric in XI");
380 ncf.var(
"pm").put_attr(
"units",
"meter-1");
381 ncf.var(
"pm").put_attr(
"grid",
"grid");
382 ncf.var(
"pm").put_attr(
"location",
"face");
383 ncf.var(
"pm").put_attr(
"coordinates",
"x_rho y_rho");
384 ncf.var(
"pm").put_attr(
"field",
"pm, scalar");
387 ncf.var(
"pn").put_attr(
"long_name",
"curvilinear coordinate metric in ETA");
388 ncf.var(
"pn").put_attr(
"units",
"meter-1");
389 ncf.var(
"pn").put_attr(
"grid",
"grid");
390 ncf.var(
"pn").put_attr(
"location",
"face");
391 ncf.var(
"pn").put_attr(
"coordinates",
"x_rho y_rho");
392 ncf.var(
"pn").put_attr(
"field",
"pn, scalar");
395 ncf.var(
"f").put_attr(
"long_name",
"Coriolis parameter at RHO-points");
396 ncf.var(
"f").put_attr(
"units",
"second-1");
397 ncf.var(
"f").put_attr(
"grid",
"grid");
398 ncf.var(
"f").put_attr(
"location",
"face");
399 ncf.var(
"f").put_attr(
"coordinates",
"x_rho y_rho");
400 ncf.var(
"f").put_attr(
"field",
"coriolis, scalar");
403 ncf.var(
"x_rho").put_attr(
"long_name",
"x-locations of RHO-points");
404 ncf.var(
"x_rho").put_attr(
"units",
"meter");
405 ncf.var(
"x_rho").put_attr(
"field",
"x_rho, scalar");
408 ncf.var(
"y_rho").put_attr(
"long_name",
"y-locations of RHO-points");
409 ncf.var(
"y_rho").put_attr(
"units",
"meter");
410 ncf.var(
"y_rho").put_attr(
"field",
"y_rho, scalar");
413 ncf.var(
"x_u").put_attr(
"long_name",
"x-locations of U-points");
414 ncf.var(
"x_u").put_attr(
"units",
"meter");
415 ncf.var(
"x_u").put_attr(
"field",
"x_u, scalar");
418 ncf.var(
"y_u").put_attr(
"long_name",
"y-locations of U-points");
419 ncf.var(
"y_u").put_attr(
"units",
"meter");
420 ncf.var(
"y_u").put_attr(
"field",
"y_u, scalar");
423 ncf.var(
"x_v").put_attr(
"long_name",
"x-locations of V-points");
424 ncf.var(
"x_v").put_attr(
"units",
"meter");
425 ncf.var(
"x_v").put_attr(
"field",
"x_v, scalar");
428 ncf.var(
"y_v").put_attr(
"long_name",
"y-locations of V-points");
429 ncf.var(
"y_v").put_attr(
"units",
"meter");
430 ncf.var(
"y_v").put_attr(
"field",
"y_v, scalar");
433 ncf.var(
"x_psi").put_attr(
"long_name",
"x-locations of PSI-points");
434 ncf.var(
"x_psi").put_attr(
"units",
"meter");
435 ncf.var(
"x_psi").put_attr(
"field",
"x_psi, scalar");
438 ncf.var(
"y_psi").put_attr(
"long_name",
"y-locations of PSI-points");
439 ncf.var(
"y_psi").put_attr(
"units",
"meter");
440 ncf.var(
"y_psi").put_attr(
"field",
"y_psi, scalar");
450 ncf.var(
"ocean_time").put_attr(
"long_name",
"time since initialization");
453 ncf.var(
"ocean_time").put_attr(
"field",
"time, scalar, series");
459 ncf.var(
"dstart").put_attr(
"long_name",
"time stamp assigned to model initialization");
464 ncf.var(
"Cs_r").put_attr(
"long_name",
"S-coordinate stretching curves at RHO points");
465 ncf.var(
"Cs_r").put_attr(
"valid_min",std::vector({-
one}));
466 ncf.var(
"Cs_r").put_attr(
"valid_max",std::vector({
zero}));
467 ncf.var(
"Cs_r").put_attr(
"field",
"Cs_r, scalar");
470 ncf.var(
"Cs_w").put_attr(
"long_name",
"S-coordinate stretching curves at W points");
471 ncf.var(
"Cs_w").put_attr(
"valid_min",std::vector({-
one}));
472 ncf.var(
"Cs_w").put_attr(
"valid_max",std::vector({
zero}));
473 ncf.var(
"Cs_w").put_attr(
"field",
"Cs_w, scalar");
476 ncf.var(
"h").put_attr(
"long_name",
"bathymetry at RHO-points");
477 ncf.var(
"h").put_attr(
"units",
"meter");
478 ncf.var(
"h").put_attr(
"grid",
"grid");
479 ncf.var(
"h").put_attr(
"location",
"face");
480 ncf.var(
"h").put_attr(
"coordinates",
"x_rho y_rho");
481 ncf.var(
"h").put_attr(
"field",
"bath, scalar");
484 ncf.var(
"zeta").put_attr(
"long_name",
"free-surface");
485 ncf.var(
"zeta").put_attr(
"units",
"meter");
486 ncf.var(
"zeta").put_attr(
"time",
"ocean_time");
487 ncf.var(
"zeta").put_attr(
"grid",
"grid");
488 ncf.var(
"zeta").put_attr(
"location",
"face");
489 ncf.var(
"zeta").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
490 ncf.var(
"zeta").put_attr(
"field",
"free-surface, scalar, series");
492 for (
int n = 0; n <
ncons; ++n) {
501 ncf.var(
nm).put_attr(
"long_name",
"potential temperature");
502 ncf.var(
nm).put_attr(
"units",
"Celsius");
503 ncf.var(
nm).put_attr(
"field",
"temperature, scalar, series");
505 ncf.var(
nm).put_attr(
"long_name",
"salinity");
506 ncf.var(
nm).put_attr(
"field",
"salinity, scalar, series");
508 ncf.var(
nm).put_attr(
"long_name",
nm);
509 ncf.var(
nm).put_attr(
"field",
nm +
", scalar, series");
511 ncf.var(
nm).put_attr(
"time",
"ocean_time");
512 ncf.var(
nm).put_attr(
"grid",
"grid");
513 ncf.var(
nm).put_attr(
"location",
"face");
514 ncf.var(
nm).put_attr(
"coordinates",
"x_rho y_rho s_rho ocean_time");
525 ncf.var(
"vorticity").put_attr(
"long_name",
"vorticity");
526 ncf.var(
"vorticity").put_attr(
"time",
"ocean_time");
527 ncf.var(
"vorticity").put_attr(
"grid",
"grid");
528 ncf.var(
"vorticity").put_attr(
"location",
"face");
529 ncf.var(
"vorticity").put_attr(
"coordinates",
"x_rho y_rho s_rho ocean_time");
530 ncf.var(
"vorticity").put_attr(
"field",
"vorticity, scalar, series");
537 ncf.var(
"visc2").put_attr(
"long_name",
"horizontal harmonic viscosity coefficient at RHO-points");
538 ncf.var(
"visc2").put_attr(
"units",
"meter2 second-1");
539 ncf.var(
"visc2").put_attr(
"grid",
"grid");
540 ncf.var(
"visc2").put_attr(
"location",
"face");
541 ncf.var(
"visc2").put_attr(
"coordinates",
"x_rho y_rho");
542 ncf.var(
"visc2").put_attr(
"field",
"visc2, scalar");
544 for (
int n = 0; n <
ncons; ++n) {
545 const std::string
nm = std::string(
"diff2_") +
cons_names[n];
547 ncf.var(
nm).put_attr(
"long_name", std::string(
"horizontal harmonic diffusivity coefficient for ") +
cons_names[n] +
" at RHO-points");
548 ncf.var(
nm).put_attr(
"units",
"meter2 second-1");
549 ncf.var(
nm).put_attr(
"grid",
"grid");
550 ncf.var(
nm).put_attr(
"location",
"face");
551 ncf.var(
nm).put_attr(
"coordinates",
"x_rho y_rho");
552 ncf.var(
nm).put_attr(
"field",
nm +
", scalar");
557 ncf.var(
"u").put_attr(
"long_name",
"u-momentum component");
558 ncf.var(
"u").put_attr(
"units",
"meter second-1");
559 ncf.var(
"u").put_attr(
"time",
"ocean_time");
560 ncf.var(
"u").put_attr(
"grid",
"grid");
561 ncf.var(
"u").put_attr(
"location",
"edge1");
562 ncf.var(
"u").put_attr(
"coordinates",
"x_u y_u s_rho ocean_time");
563 ncf.var(
"u").put_attr(
"field",
"u-velocity, scalar, series");
566 ncf.var(
"v").put_attr(
"long_name",
"v-momentum component");
567 ncf.var(
"v").put_attr(
"units",
"meter second-1");
568 ncf.var(
"v").put_attr(
"time",
"ocean_time");
569 ncf.var(
"v").put_attr(
"grid",
"grid");
570 ncf.var(
"v").put_attr(
"location",
"edge2");
571 ncf.var(
"v").put_attr(
"coordinates",
"x_v y_v s_rho ocean_time");
572 ncf.var(
"v").put_attr(
"field",
"v-velocity, scalar, series");
575 ncf.var(
"ubar").put_attr(
"long_name",
"vertically integrated u-momentum component");
576 ncf.var(
"ubar").put_attr(
"units",
"meter second-1");
577 ncf.var(
"ubar").put_attr(
"time",
"ocean_time");
578 ncf.var(
"ubar").put_attr(
"grid",
"grid");
579 ncf.var(
"ubar").put_attr(
"location",
"edge1");
580 ncf.var(
"ubar").put_attr(
"coordinates",
"x_u y_u ocean_time");
581 ncf.var(
"ubar").put_attr(
"field",
"ubar-velocity, scalar, series");
584 ncf.var(
"vbar").put_attr(
"long_name",
"vertically integrated v-momentum component");
585 ncf.var(
"vbar").put_attr(
"units",
"meter second-1");
586 ncf.var(
"vbar").put_attr(
"time",
"ocean_time");
587 ncf.var(
"vbar").put_attr(
"grid",
"grid");
588 ncf.var(
"vbar").put_attr(
"location",
"edge2");
589 ncf.var(
"vbar").put_attr(
"coordinates",
"x_v y_v ocean_time");
590 ncf.var(
"vbar").put_attr(
"field",
"vbar-velocity, scalar, series");
593 ncf.var(
"sustr").put_attr(
"long_name",
"surface u-momentum stress");
594 ncf.var(
"sustr").put_attr(
"units",
"newton meter-2");
595 ncf.var(
"sustr").put_attr(
"time",
"ocean_time");
596 ncf.var(
"sustr").put_attr(
"grid",
"grid");
597 ncf.var(
"sustr").put_attr(
"location",
"edge1");
598 ncf.var(
"sustr").put_attr(
"coordinates",
"x_u y_u ocean_time");
599 ncf.var(
"sustr").put_attr(
"field",
"surface u-momentum stress, scalar, series");
602 ncf.var(
"svstr").put_attr(
"long_name",
"surface v-momentum stress");
603 ncf.var(
"svstr").put_attr(
"units",
"newton meter-2");
604 ncf.var(
"svstr").put_attr(
"time",
"ocean_time");
605 ncf.var(
"svstr").put_attr(
"grid",
"grid");
606 ncf.var(
"svstr").put_attr(
"location",
"edge2");
607 ncf.var(
"svstr").put_attr(
"coordinates",
"x_v y_v ocean_time");
608 ncf.var(
"svstr").put_attr(
"field",
"surface v-momentum stress, scalar, series");
611 ncf.var(
"mask_rho").put_attr(
"long_name",
"mask on RHO-points");
612 ncf.var(
"mask_rho").put_attr(
"time",
"ocean_time");
613 ncf.var(
"mask_rho").put_attr(
"flag_values",std::vector({Real(0.0),Real(1.0)}));
614 ncf.var(
"mask_rho").put_attr(
"flag_meanings",
"land water");
617 ncf.var(
"mask_u").put_attr(
"long_name",
"mask on U-points");
618 ncf.var(
"mask_u").put_attr(
"time",
"ocean_time");
619 ncf.var(
"mask_u").put_attr(
"flag_values",std::vector({Real(0.0),Real(1.0)}));
620 ncf.var(
"mask_u").put_attr(
"flag_meanings",
"land water");
623 ncf.var(
"mask_v").put_attr(
"long_name",
"mask on V-points");
624 ncf.var(
"mask_v").put_attr(
"time",
"ocean_time");
625 ncf.var(
"mask_v").put_attr(
"flag_values",std::vector({Real(0.0),Real(1.0)}));
626 ncf.var(
"mask_v").put_attr(
"flag_meanings",
"land water");
634 for (
int n = 0; n <
ncons; ++n) {
635 const std::string
nm = std::string(
"stflux_") +
cons_names[n];
638 ncf.var(
nm).put_attr(
"long_name", std::string(
"surface flux of ") +
cons_names[n]);
640 ncf.var(
nm).put_attr(
"units", (n ==
Temp_comp) ?
"Celsius meter second-1"
642 ncf.var(
nm).put_attr(
"time",
"ocean_time");
643 ncf.var(
nm).put_attr(
"grid",
"grid");
644 ncf.var(
nm).put_attr(
"location",
"face");
645 ncf.var(
nm).put_attr(
"coordinates",
"x_rho y_rho ocean_time");
646 ncf.var(
nm).put_attr(
"field",
nm +
", scalar, series");
652 ncf.var(
"Tair").put_attr(
"long_name",
"surface air temperature");
653 ncf.var(
"Tair").put_attr(
"units",
"Celsius");
654 ncf.var(
"Tair").put_attr(
"time",
"ocean_time");
655 ncf.var(
"Tair").put_attr(
"grid",
"grid");
656 ncf.var(
"Tair").put_attr(
"location",
"face");
657 ncf.var(
"Tair").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
658 ncf.var(
"Tair").put_attr(
"field",
"Tair, scalar, series");
662 ncf.var(
"Pair").put_attr(
"long_name",
"surface air pressure");
663 ncf.var(
"Pair").put_attr(
"units",
"Pascal");
664 ncf.var(
"Pair").put_attr(
"time",
"ocean_time");
665 ncf.var(
"Pair").put_attr(
"grid",
"grid");
666 ncf.var(
"Pair").put_attr(
"location",
"face");
667 ncf.var(
"Pair").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
668 ncf.var(
"Pair").put_attr(
"field",
"Pair, scalar, series");
672 ncf.var(
"qnet").put_attr(
"long_name",
"surface net heat flux");
673 ncf.var(
"qnet").put_attr(
"units",
"watt meter-2");
674 ncf.var(
"qnet").put_attr(
"time",
"ocean_time");
675 ncf.var(
"qnet").put_attr(
"grid",
"grid");
676 ncf.var(
"qnet").put_attr(
"location",
"face");
677 ncf.var(
"qnet").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
678 ncf.var(
"qnet").put_attr(
"field",
"surface heat flux, scalar, series");
682 ncf.var(
"ssflux").put_attr(
"long_name",
"kinematic surface net salt flux, SALT*(E-P)/rhow");
683 ncf.var(
"ssflux").put_attr(
"units",
"meter second-1");
684 ncf.var(
"ssflux").put_attr(
"time",
"ocean_time");
685 ncf.var(
"ssflux").put_attr(
"grid",
"grid");
686 ncf.var(
"ssflux").put_attr(
"location",
"face");
687 ncf.var(
"ssflux").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
688 ncf.var(
"ssflux").put_attr(
"field",
"surface net salt flux, scalar, series");
692 ncf.var(
"latent").put_attr(
"long_name",
"net latent heat flux");
693 ncf.var(
"latent").put_attr(
"units",
"watt meter-2");
694 ncf.var(
"latent").put_attr(
"time",
"ocean_time");
695 ncf.var(
"latent").put_attr(
"grid",
"grid");
696 ncf.var(
"latent").put_attr(
"location",
"face");
697 ncf.var(
"latent").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
698 ncf.var(
"latent").put_attr(
"field",
"latent heat flux, scalar, series");
702 ncf.var(
"sensible").put_attr(
"long_name",
"net sensible heat flux");
703 ncf.var(
"sensible").put_attr(
"units",
"watt meter-2");
704 ncf.var(
"sensible").put_attr(
"time",
"ocean_time");
705 ncf.var(
"sensible").put_attr(
"grid",
"grid");
706 ncf.var(
"sensible").put_attr(
"location",
"face");
707 ncf.var(
"sensible").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
708 ncf.var(
"sensible").put_attr(
"field",
"sensible heat flux, scalar, series");
712 ncf.var(
"lwrad").put_attr(
"long_name",
"net longwave radiation flux");
713 ncf.var(
"lwrad").put_attr(
"units",
"watt meter-2");
714 ncf.var(
"lwrad").put_attr(
"time",
"ocean_time");
715 ncf.var(
"lwrad").put_attr(
"grid",
"grid");
716 ncf.var(
"lwrad").put_attr(
"location",
"face");
717 ncf.var(
"lwrad").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
718 ncf.var(
"lwrad").put_attr(
"field",
"longwave radiation, scalar, series");
722 ncf.var(
"swrad").put_attr(
"long_name",
"solar shortwave radiation flux");
723 ncf.var(
"swrad").put_attr(
"units",
"watt meter-2");
724 ncf.var(
"swrad").put_attr(
"time",
"ocean_time");
725 ncf.var(
"swrad").put_attr(
"grid",
"grid");
726 ncf.var(
"swrad").put_attr(
"location",
"face");
727 ncf.var(
"swrad").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
728 ncf.var(
"swrad").put_attr(
"field",
"shortwave radiation, scalar, series");
732 ncf.var(
"evaporation").put_attr(
"long_name",
"evaporation rate");
733 ncf.var(
"evaporation").put_attr(
"units",
"kilogram meter-2 second-1");
734 ncf.var(
"evaporation").put_attr(
"time",
"ocean_time");
735 ncf.var(
"evaporation").put_attr(
"grid",
"grid");
736 ncf.var(
"evaporation").put_attr(
"location",
"face");
737 ncf.var(
"evaporation").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
738 ncf.var(
"evaporation").put_attr(
"field",
"evaporation, scalar, series");
742 ncf.var(
"rain").put_attr(
"long_name",
"rain fall rate");
743 ncf.var(
"rain").put_attr(
"units",
"kilogram meter-2 second-1");
744 ncf.var(
"rain").put_attr(
"time",
"ocean_time");
745 ncf.var(
"rain").put_attr(
"grid",
"grid");
746 ncf.var(
"rain").put_attr(
"location",
"face");
747 ncf.var(
"rain").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
748 ncf.var(
"rain").put_attr(
"field",
"rain, scalar, series");
753 ncf.put_attr(
"CurrentLevel", std::vector<int> {
flev });
754 ncf.put_attr(
"DefaultGeometry", std::vector<int> { amrex::DefaultGeometry().Coord() });
770 amrex::Vector<Real>
probLo;
771 amrex::Vector<Real>
probHi;
780 if (amrex::ParallelDescriptor::IOProcessor())
791 amrex::Vector<int>
bigend;
824 ncf.var(
"hc").put(&
hc);
825 ncf.var(
"theta_s").put(&theta_s);
826 ncf.var(
"theta_b").put(&theta_b);
854 const long long nt_count = amrex::ParallelDescriptor::IOProcessor() ?
local_nt : 0;
860 amrex::Abort(
"Found while writing output: zeta contains nan or inf");
866 for (
int n = 0; n <
ncons; ++n) {
871 if (
comp < 0) {
continue; }
873 amrex::Abort(
"Found while writing output: " +
cons_names[n] +
874 " contains nan or inf");
878 amrex::Abort(
"Found while writing output: velocity u contains nan or inf");
881 amrex::Abort(
"Found while writing output: velocity ubar contains nan or inf");
884 amrex::Abort(
"Found while writing output: velocity v contains nan or inf");
887 amrex::Abort(
"Found while writing output: velocity vbar contains nan or inf");
891 auto bx =
mfi.validbox();
942 Gpu::streamSynchronize();
956 Gpu::streamSynchronize();
970 Gpu::streamSynchronize();
985 Gpu::streamSynchronize();
998 Gpu::streamSynchronize();
1002 nc_plot_var.put(
tmp_bathy.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1010 Gpu::streamSynchronize();
1015 nc_plot_var.put(
tmp_pm.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1023 Gpu::streamSynchronize();
1027 nc_plot_var.put(
tmp_pn.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1035 Gpu::streamSynchronize();
1039 nc_plot_var.put(
tmp_f.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1047 Gpu::streamSynchronize();
1052 nc_plot_var.put(
tmp_xr.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1060 Gpu::streamSynchronize();
1064 nc_plot_var.put(
tmp_yr.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1072 Gpu::streamSynchronize();
1075 nc_plot_var.put(
tmp_zeta.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny,
1083 Gpu::streamSynchronize();
1086 nc_plot_var.put(
tmp_mask_rho.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny,
1091 for (
int n = 0; n <
ncons; ++n) {
1092 const std::string
nm = std::string(
"stflux_") +
cons_names[n];
1097 Gpu::streamSynchronize();
1100 nc_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x },
1101 { local_nt, local_ny, local_nx });
1114 Gpu::streamSynchronize();
1117 nc_plot_var.put(
tmp_Tair.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1124 Gpu::streamSynchronize();
1127 nc_plot_var.put(
tmp_Pair.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1145 Gpu::streamSynchronize();
1149 { local_start_nt, local_start_y, local_start_x },
1150 { local_nt, local_ny, local_nx });
1165 Gpu::streamSynchronize();
1169 { local_start_nt, local_start_y, local_start_x },
1170 { local_nt, local_ny, local_nx });
1181 Gpu::streamSynchronize();
1185 { local_start_nt, local_start_y, local_start_x },
1186 { local_nt, local_ny, local_nx });
1197 Gpu::streamSynchronize();
1201 { local_start_nt, local_start_y, local_start_x },
1202 { local_nt, local_ny, local_nx });
1213 Gpu::streamSynchronize();
1217 { local_start_nt, local_start_y, local_start_x },
1218 { local_nt, local_ny, local_nx });
1225 Gpu::streamSynchronize();
1229 { local_start_nt, local_start_y, local_start_x },
1230 { local_nt, local_ny, local_nx });
1237 Gpu::streamSynchronize();
1241 { local_start_nt, local_start_y, local_start_x },
1242 { local_nt, local_ny, local_nx });
1249 Gpu::streamSynchronize();
1253 { local_start_nt, local_start_y, local_start_x },
1254 { local_nt, local_ny, local_nx });
1259 for (
int n = 0; n <
ncons; ++n) {
1266 tmp.resize(
tmp_bx, 1, amrex::The_Pinned_Arena());
1268 Gpu::streamSynchronize();
1271 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_z, local_start_y, local_start_x }, { local_nt,
1272 local_nz, local_ny, local_nx });
1285 tmp.resize(
tmp_bx, 1, amrex::The_Pinned_Arena());
1287 Gpu::streamSynchronize();
1290 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_z, local_start_y, local_start_x }, { local_nt,
1291 local_nz, local_ny, local_nx });
1305 Gpu::streamSynchronize();
1308 nc_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1312 for (
int n = 0; n <
ncons; ++n) {
1313 const std::string
nm = std::string(
"diff2_") +
cons_names[n];
1317 Gpu::streamSynchronize();
1320 nc_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1334 Box
bx =
mfi.validbox();
1341 tmp_bx.surroundingNodes(0);
1366 Gpu::streamSynchronize();
1370 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1376 Gpu::streamSynchronize();
1380 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1386 tmp.resize(
tmp_bx, 1, amrex::The_Pinned_Arena());
1388 Gpu::streamSynchronize();
1391 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_z, local_start_y, local_start_x }, { local_nt,
1392 local_nz, local_ny, local_nx });
1399 Gpu::streamSynchronize();
1402 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1408 Gpu::streamSynchronize();
1411 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1417 Gpu::streamSynchronize();
1420 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1429 Box
bx =
mfi.validbox();
1436 tmp_bx.surroundingNodes(1);
1464 Gpu::streamSynchronize();
1468 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1474 Gpu::streamSynchronize();
1478 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1484 tmp.resize(
tmp_bx, 1, amrex::The_Pinned_Arena());
1486 Gpu::streamSynchronize();
1489 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_z, local_start_y, local_start_x }, { local_nt,
1490 local_nz, local_ny, local_nx });
1497 Gpu::streamSynchronize();
1500 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1507 Gpu::streamSynchronize();
1510 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1516 Gpu::streamSynchronize();
1519 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1528 Box
bx =
mfi.validbox();
1535 tmp_bx.surroundingNodes(0);
1536 tmp_bx.surroundingNodes(1);
1556 Gpu::streamSynchronize();
1560 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1566 Gpu::streamSynchronize();
1570 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });