279 const std::string
nt_name =
"ocean_time";
280 const std::string
ndim_name =
"num_geo_dimensions";
282 const std::string
flev_name =
"FINEST_LEVEL";
284 const std::string
nx_name =
"NX";
285 const std::string
ny_name =
"NY";
286 const std::string
nz_name =
"NZ";
303 ncf.enter_def_mode();
304 ncf.put_attr(
"title",
"REMORA data ");
334 ncf.var(
"probLo").put_attr(
"long_name",
"Low side of problem domain in internal AMReX grid");
335 ncf.var(
"probLo").put_attr(
"units",
"meter");
337 ncf.var(
"probHi").put_attr(
"long_name",
"High side of problem domain in internal AMReX grid");
338 ncf.var(
"probHi").put_attr(
"units",
"meter");
341 ncf.var(
"Geom.smallend").put_attr(
"long_name",
"Low side of problem domain in index space");
343 ncf.var(
"Geom.bigend").put_attr(
"long_name",
"High side of problem domain in index space");
345 ncf.var(
"CellSize").put_attr(
"long_name",
"Cell size on internal AMReX grid");
346 ncf.var(
"CellSize").put_attr(
"units",
"meter");
349 ncf.var(
"theta_s").put_attr(
"long_name",
"S-coordinate surface control parameter");
351 ncf.var(
"theta_b").put_attr(
"long_name",
"S-coordinate bottom control parameter");
353 ncf.var(
"hc").put_attr(
"long_name",
"S-coordinate parameter, critical depth");
354 ncf.var(
"hc").put_attr(
"units",
"meter");
357 ncf.var(
"grid").put_attr(
"cf_role",
"grid_topology");
358 ncf.var(
"grid").put_attr(
"topology_dimension",std::vector({2}));
359 ncf.var(
"grid").put_attr(
"node_dimensions",
"xi_psi eta_psi");
360 ncf.var(
"grid").put_attr(
"face_dimensions",
"xi_rho: xi_psi (padding: both) eta_rho: eta_psi (padding: both)");
361 ncf.var(
"grid").put_attr(
"edge1_dimensions",
"xi_u: xi_psi eta_u: eta_psi (padding: both)");
362 ncf.var(
"grid").put_attr(
"edge2_dimensions",
"xi_v: xi_psi (padding: both) eta_v: eta_psi");
363 ncf.var(
"grid").put_attr(
"node_coordinates",
"x_psi y_psi");
364 ncf.var(
"grid").put_attr(
"face_coordinates",
"x_rho y_rho");
365 ncf.var(
"grid").put_attr(
"edge1_coordinates",
"x_u y_u");
366 ncf.var(
"grid").put_attr(
"edge2_coordinates",
"x_v y_v");
367 ncf.var(
"grid").put_attr(
"vertical_dimensions",
"s_rho: s_w (padding: none)");
370 ncf.var(
"s_rho").put_attr(
"long_name",
"S-coordinate at RHO-points");
371 ncf.var(
"s_rho").put_attr(
"field",
"s_rho, scalar");
374 ncf.var(
"s_w").put_attr(
"long_name",
"S-coordinate at W-points");
375 ncf.var(
"s_w").put_attr(
"field",
"s_w, scalar");
378 ncf.var(
"pm").put_attr(
"long_name",
"curvilinear coordinate metric in XI");
379 ncf.var(
"pm").put_attr(
"units",
"meter-1");
380 ncf.var(
"pm").put_attr(
"grid",
"grid");
381 ncf.var(
"pm").put_attr(
"location",
"face");
382 ncf.var(
"pm").put_attr(
"coordinates",
"x_rho y_rho");
383 ncf.var(
"pm").put_attr(
"field",
"pm, scalar");
386 ncf.var(
"pn").put_attr(
"long_name",
"curvilinear coordinate metric in ETA");
387 ncf.var(
"pn").put_attr(
"units",
"meter-1");
388 ncf.var(
"pn").put_attr(
"grid",
"grid");
389 ncf.var(
"pn").put_attr(
"location",
"face");
390 ncf.var(
"pn").put_attr(
"coordinates",
"x_rho y_rho");
391 ncf.var(
"pn").put_attr(
"field",
"pn, scalar");
394 ncf.var(
"f").put_attr(
"long_name",
"Coriolis parameter at RHO-points");
395 ncf.var(
"f").put_attr(
"units",
"second-1");
396 ncf.var(
"f").put_attr(
"grid",
"grid");
397 ncf.var(
"f").put_attr(
"location",
"face");
398 ncf.var(
"f").put_attr(
"coordinates",
"x_rho y_rho");
399 ncf.var(
"f").put_attr(
"field",
"coriolis, scalar");
402 ncf.var(
"x_rho").put_attr(
"long_name",
"x-locations of RHO-points");
403 ncf.var(
"x_rho").put_attr(
"units",
"meter");
404 ncf.var(
"x_rho").put_attr(
"field",
"x_rho, scalar");
407 ncf.var(
"y_rho").put_attr(
"long_name",
"y-locations of RHO-points");
408 ncf.var(
"y_rho").put_attr(
"units",
"meter");
409 ncf.var(
"y_rho").put_attr(
"field",
"y_rho, scalar");
412 ncf.var(
"x_u").put_attr(
"long_name",
"x-locations of U-points");
413 ncf.var(
"x_u").put_attr(
"units",
"meter");
414 ncf.var(
"x_u").put_attr(
"field",
"x_u, scalar");
417 ncf.var(
"y_u").put_attr(
"long_name",
"y-locations of U-points");
418 ncf.var(
"y_u").put_attr(
"units",
"meter");
419 ncf.var(
"y_u").put_attr(
"field",
"y_u, scalar");
422 ncf.var(
"x_v").put_attr(
"long_name",
"x-locations of V-points");
423 ncf.var(
"x_v").put_attr(
"units",
"meter");
424 ncf.var(
"x_v").put_attr(
"field",
"x_v, scalar");
427 ncf.var(
"y_v").put_attr(
"long_name",
"y-locations of V-points");
428 ncf.var(
"y_v").put_attr(
"units",
"meter");
429 ncf.var(
"y_v").put_attr(
"field",
"y_v, scalar");
432 ncf.var(
"x_psi").put_attr(
"long_name",
"x-locations of PSI-points");
433 ncf.var(
"x_psi").put_attr(
"units",
"meter");
434 ncf.var(
"x_psi").put_attr(
"field",
"x_psi, scalar");
437 ncf.var(
"y_psi").put_attr(
"long_name",
"y-locations of PSI-points");
438 ncf.var(
"y_psi").put_attr(
"units",
"meter");
439 ncf.var(
"y_psi").put_attr(
"field",
"y_psi, scalar");
442 ncf.var(
"ocean_time").put_attr(
"long_name",
"time since initialization");
443 ncf.var(
"ocean_time").put_attr(
"units",
"seconds since 0001-01-01 00:00:00");
444 ncf.var(
"ocean_time").put_attr(
"field",
"time, scalar, series");
447 ncf.var(
"Cs_r").put_attr(
"long_name",
"S-coordinate stretching curves at RHO points");
448 ncf.var(
"Cs_r").put_attr(
"valid_min",std::vector({-
one}));
449 ncf.var(
"Cs_r").put_attr(
"valid_max",std::vector({
zero}));
450 ncf.var(
"Cs_r").put_attr(
"field",
"Cs_r, scalar");
453 ncf.var(
"Cs_w").put_attr(
"long_name",
"S-coordinate stretching curves at W points");
454 ncf.var(
"Cs_w").put_attr(
"valid_min",std::vector({-
one}));
455 ncf.var(
"Cs_w").put_attr(
"valid_max",std::vector({
zero}));
456 ncf.var(
"Cs_w").put_attr(
"field",
"Cs_w, scalar");
459 ncf.var(
"h").put_attr(
"long_name",
"bathymetry at RHO-points");
460 ncf.var(
"h").put_attr(
"units",
"meter");
461 ncf.var(
"h").put_attr(
"grid",
"grid");
462 ncf.var(
"h").put_attr(
"location",
"face");
463 ncf.var(
"h").put_attr(
"coordinates",
"x_rho y_rho");
464 ncf.var(
"h").put_attr(
"field",
"bath, scalar");
467 ncf.var(
"zeta").put_attr(
"long_name",
"free-surface");
468 ncf.var(
"zeta").put_attr(
"units",
"meter");
469 ncf.var(
"zeta").put_attr(
"time",
"ocean_time");
470 ncf.var(
"zeta").put_attr(
"grid",
"grid");
471 ncf.var(
"zeta").put_attr(
"location",
"face");
472 ncf.var(
"zeta").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
473 ncf.var(
"zeta").put_attr(
"field",
"free-surface, scalar, series");
475 for (
int n = 0; n <
ncons; ++n) {
484 ncf.var(
nm).put_attr(
"long_name",
"potential temperature");
485 ncf.var(
nm).put_attr(
"units",
"Celsius");
486 ncf.var(
nm).put_attr(
"field",
"temperature, scalar, series");
488 ncf.var(
nm).put_attr(
"long_name",
"salinity");
489 ncf.var(
nm).put_attr(
"field",
"salinity, scalar, series");
491 ncf.var(
nm).put_attr(
"long_name",
nm);
492 ncf.var(
nm).put_attr(
"field",
nm +
", scalar, series");
494 ncf.var(
nm).put_attr(
"time",
"ocean_time");
495 ncf.var(
nm).put_attr(
"grid",
"grid");
496 ncf.var(
nm).put_attr(
"location",
"face");
497 ncf.var(
nm).put_attr(
"coordinates",
"x_rho y_rho s_rho ocean_time");
508 ncf.var(
"vorticity").put_attr(
"long_name",
"vorticity");
509 ncf.var(
"vorticity").put_attr(
"time",
"ocean_time");
510 ncf.var(
"vorticity").put_attr(
"grid",
"grid");
511 ncf.var(
"vorticity").put_attr(
"location",
"face");
512 ncf.var(
"vorticity").put_attr(
"coordinates",
"x_rho y_rho s_rho ocean_time");
513 ncf.var(
"vorticity").put_attr(
"field",
"vorticity, scalar, series");
520 ncf.var(
"visc2").put_attr(
"long_name",
"horizontal harmonic viscosity coefficient at RHO-points");
521 ncf.var(
"visc2").put_attr(
"units",
"meter2 second-1");
522 ncf.var(
"visc2").put_attr(
"grid",
"grid");
523 ncf.var(
"visc2").put_attr(
"location",
"face");
524 ncf.var(
"visc2").put_attr(
"coordinates",
"x_rho y_rho");
525 ncf.var(
"visc2").put_attr(
"field",
"visc2, scalar");
527 for (
int n = 0; n <
ncons; ++n) {
528 const std::string
nm = std::string(
"diff2_") +
cons_names[n];
530 ncf.var(
nm).put_attr(
"long_name", std::string(
"horizontal harmonic diffusivity coefficient for ") +
cons_names[n] +
" at RHO-points");
531 ncf.var(
nm).put_attr(
"units",
"meter2 second-1");
532 ncf.var(
nm).put_attr(
"grid",
"grid");
533 ncf.var(
nm).put_attr(
"location",
"face");
534 ncf.var(
nm).put_attr(
"coordinates",
"x_rho y_rho");
535 ncf.var(
nm).put_attr(
"field",
nm +
", scalar");
540 ncf.var(
"u").put_attr(
"long_name",
"u-momentum component");
541 ncf.var(
"u").put_attr(
"units",
"meter second-1");
542 ncf.var(
"u").put_attr(
"time",
"ocean_time");
543 ncf.var(
"u").put_attr(
"grid",
"grid");
544 ncf.var(
"u").put_attr(
"location",
"edge1");
545 ncf.var(
"u").put_attr(
"coordinates",
"x_u y_u s_rho ocean_time");
546 ncf.var(
"u").put_attr(
"field",
"u-velocity, scalar, series");
549 ncf.var(
"v").put_attr(
"long_name",
"v-momentum component");
550 ncf.var(
"v").put_attr(
"units",
"meter second-1");
551 ncf.var(
"v").put_attr(
"time",
"ocean_time");
552 ncf.var(
"v").put_attr(
"grid",
"grid");
553 ncf.var(
"v").put_attr(
"location",
"edge2");
554 ncf.var(
"v").put_attr(
"coordinates",
"x_v y_v s_rho ocean_time");
555 ncf.var(
"v").put_attr(
"field",
"v-velocity, scalar, series");
558 ncf.var(
"ubar").put_attr(
"long_name",
"vertically integrated u-momentum component");
559 ncf.var(
"ubar").put_attr(
"units",
"meter second-1");
560 ncf.var(
"ubar").put_attr(
"time",
"ocean_time");
561 ncf.var(
"ubar").put_attr(
"grid",
"grid");
562 ncf.var(
"ubar").put_attr(
"location",
"edge1");
563 ncf.var(
"ubar").put_attr(
"coordinates",
"x_u y_u ocean_time");
564 ncf.var(
"ubar").put_attr(
"field",
"ubar-velocity, scalar, series");
567 ncf.var(
"vbar").put_attr(
"long_name",
"vertically integrated v-momentum component");
568 ncf.var(
"vbar").put_attr(
"units",
"meter second-1");
569 ncf.var(
"vbar").put_attr(
"time",
"ocean_time");
570 ncf.var(
"vbar").put_attr(
"grid",
"grid");
571 ncf.var(
"vbar").put_attr(
"location",
"edge2");
572 ncf.var(
"vbar").put_attr(
"coordinates",
"x_v y_v ocean_time");
573 ncf.var(
"vbar").put_attr(
"field",
"vbar-velocity, scalar, series");
576 ncf.var(
"sustr").put_attr(
"long_name",
"surface u-momentum stress");
577 ncf.var(
"sustr").put_attr(
"units",
"newton meter-2");
578 ncf.var(
"sustr").put_attr(
"time",
"ocean_time");
579 ncf.var(
"sustr").put_attr(
"grid",
"grid");
580 ncf.var(
"sustr").put_attr(
"location",
"edge1");
581 ncf.var(
"sustr").put_attr(
"coordinates",
"x_u y_u ocean_time");
582 ncf.var(
"sustr").put_attr(
"field",
"surface u-momentum stress, scalar, series");
585 ncf.var(
"svstr").put_attr(
"long_name",
"surface v-momentum stress");
586 ncf.var(
"svstr").put_attr(
"units",
"newton meter-2");
587 ncf.var(
"svstr").put_attr(
"time",
"ocean_time");
588 ncf.var(
"svstr").put_attr(
"grid",
"grid");
589 ncf.var(
"svstr").put_attr(
"location",
"edge2");
590 ncf.var(
"svstr").put_attr(
"coordinates",
"x_v y_v ocean_time");
591 ncf.var(
"svstr").put_attr(
"field",
"surface v-momentum stress, scalar, series");
594 ncf.var(
"mask_rho").put_attr(
"long_name",
"mask on RHO-points");
595 ncf.var(
"mask_rho").put_attr(
"time",
"ocean_time");
596 ncf.var(
"mask_rho").put_attr(
"flag_values",std::vector({Real(0.0),Real(1.0)}));
597 ncf.var(
"mask_rho").put_attr(
"flag_meanings",
"land water");
600 ncf.var(
"mask_u").put_attr(
"long_name",
"mask on U-points");
601 ncf.var(
"mask_u").put_attr(
"time",
"ocean_time");
602 ncf.var(
"mask_u").put_attr(
"flag_values",std::vector({Real(0.0),Real(1.0)}));
603 ncf.var(
"mask_u").put_attr(
"flag_meanings",
"land water");
606 ncf.var(
"mask_v").put_attr(
"long_name",
"mask on V-points");
607 ncf.var(
"mask_v").put_attr(
"time",
"ocean_time");
608 ncf.var(
"mask_v").put_attr(
"flag_values",std::vector({Real(0.0),Real(1.0)}));
609 ncf.var(
"mask_v").put_attr(
"flag_meanings",
"land water");
617 for (
int n = 0; n <
ncons; ++n) {
618 const std::string
nm = std::string(
"stflux_") +
cons_names[n];
621 ncf.var(
nm).put_attr(
"long_name", std::string(
"surface flux of ") +
cons_names[n]);
623 ncf.var(
nm).put_attr(
"units", (n ==
Temp_comp) ?
"Celsius meter second-1"
625 ncf.var(
nm).put_attr(
"time",
"ocean_time");
626 ncf.var(
nm).put_attr(
"grid",
"grid");
627 ncf.var(
nm).put_attr(
"location",
"face");
628 ncf.var(
nm).put_attr(
"coordinates",
"x_rho y_rho ocean_time");
629 ncf.var(
nm).put_attr(
"field",
nm +
", scalar, series");
635 ncf.var(
"Tair").put_attr(
"long_name",
"surface air temperature");
636 ncf.var(
"Tair").put_attr(
"units",
"Celsius");
637 ncf.var(
"Tair").put_attr(
"time",
"ocean_time");
638 ncf.var(
"Tair").put_attr(
"grid",
"grid");
639 ncf.var(
"Tair").put_attr(
"location",
"face");
640 ncf.var(
"Tair").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
641 ncf.var(
"Tair").put_attr(
"field",
"Tair, scalar, series");
645 ncf.var(
"Pair").put_attr(
"long_name",
"surface air pressure");
646 ncf.var(
"Pair").put_attr(
"units",
"Pascal");
647 ncf.var(
"Pair").put_attr(
"time",
"ocean_time");
648 ncf.var(
"Pair").put_attr(
"grid",
"grid");
649 ncf.var(
"Pair").put_attr(
"location",
"face");
650 ncf.var(
"Pair").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
651 ncf.var(
"Pair").put_attr(
"field",
"Pair, scalar, series");
655 ncf.var(
"qnet").put_attr(
"long_name",
"surface net heat flux");
656 ncf.var(
"qnet").put_attr(
"units",
"watt meter-2");
657 ncf.var(
"qnet").put_attr(
"time",
"ocean_time");
658 ncf.var(
"qnet").put_attr(
"grid",
"grid");
659 ncf.var(
"qnet").put_attr(
"location",
"face");
660 ncf.var(
"qnet").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
661 ncf.var(
"qnet").put_attr(
"field",
"surface heat flux, scalar, series");
665 ncf.var(
"ssflux").put_attr(
"long_name",
"kinematic surface net salt flux, SALT*(E-P)/rhow");
666 ncf.var(
"ssflux").put_attr(
"units",
"meter second-1");
667 ncf.var(
"ssflux").put_attr(
"time",
"ocean_time");
668 ncf.var(
"ssflux").put_attr(
"grid",
"grid");
669 ncf.var(
"ssflux").put_attr(
"location",
"face");
670 ncf.var(
"ssflux").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
671 ncf.var(
"ssflux").put_attr(
"field",
"surface net salt flux, scalar, series");
675 ncf.var(
"latent").put_attr(
"long_name",
"net latent heat flux");
676 ncf.var(
"latent").put_attr(
"units",
"watt meter-2");
677 ncf.var(
"latent").put_attr(
"time",
"ocean_time");
678 ncf.var(
"latent").put_attr(
"grid",
"grid");
679 ncf.var(
"latent").put_attr(
"location",
"face");
680 ncf.var(
"latent").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
681 ncf.var(
"latent").put_attr(
"field",
"latent heat flux, scalar, series");
685 ncf.var(
"sensible").put_attr(
"long_name",
"net sensible heat flux");
686 ncf.var(
"sensible").put_attr(
"units",
"watt meter-2");
687 ncf.var(
"sensible").put_attr(
"time",
"ocean_time");
688 ncf.var(
"sensible").put_attr(
"grid",
"grid");
689 ncf.var(
"sensible").put_attr(
"location",
"face");
690 ncf.var(
"sensible").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
691 ncf.var(
"sensible").put_attr(
"field",
"sensible heat flux, scalar, series");
695 ncf.var(
"lwrad").put_attr(
"long_name",
"net longwave radiation flux");
696 ncf.var(
"lwrad").put_attr(
"units",
"watt meter-2");
697 ncf.var(
"lwrad").put_attr(
"time",
"ocean_time");
698 ncf.var(
"lwrad").put_attr(
"grid",
"grid");
699 ncf.var(
"lwrad").put_attr(
"location",
"face");
700 ncf.var(
"lwrad").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
701 ncf.var(
"lwrad").put_attr(
"field",
"longwave radiation, scalar, series");
705 ncf.var(
"swrad").put_attr(
"long_name",
"solar shortwave radiation flux");
706 ncf.var(
"swrad").put_attr(
"units",
"watt meter-2");
707 ncf.var(
"swrad").put_attr(
"time",
"ocean_time");
708 ncf.var(
"swrad").put_attr(
"grid",
"grid");
709 ncf.var(
"swrad").put_attr(
"location",
"face");
710 ncf.var(
"swrad").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
711 ncf.var(
"swrad").put_attr(
"field",
"shortwave radiation, scalar, series");
715 ncf.var(
"evaporation").put_attr(
"long_name",
"evaporation rate");
716 ncf.var(
"evaporation").put_attr(
"units",
"kilogram meter-2 second-1");
717 ncf.var(
"evaporation").put_attr(
"time",
"ocean_time");
718 ncf.var(
"evaporation").put_attr(
"grid",
"grid");
719 ncf.var(
"evaporation").put_attr(
"location",
"face");
720 ncf.var(
"evaporation").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
721 ncf.var(
"evaporation").put_attr(
"field",
"evaporation, scalar, series");
725 ncf.var(
"rain").put_attr(
"long_name",
"rain fall rate");
726 ncf.var(
"rain").put_attr(
"units",
"kilogram meter-2 second-1");
727 ncf.var(
"rain").put_attr(
"time",
"ocean_time");
728 ncf.var(
"rain").put_attr(
"grid",
"grid");
729 ncf.var(
"rain").put_attr(
"location",
"face");
730 ncf.var(
"rain").put_attr(
"coordinates",
"x_rho y_rho ocean_time");
731 ncf.var(
"rain").put_attr(
"field",
"rain, scalar, series");
737 ncf.put_attr(
"CurrentLevel", std::vector<int> {
flev });
738 ncf.put_attr(
"DefaultGeometry", std::vector<int> { amrex::DefaultGeometry().Coord() });
754 amrex::Vector<Real>
probLo;
755 amrex::Vector<Real>
probHi;
764 if (amrex::ParallelDescriptor::IOProcessor())
775 amrex::Vector<int>
bigend;
808 ncf.var(
"hc").put(&
hc);
809 ncf.var(
"theta_s").put(&theta_s);
810 ncf.var(
"theta_b").put(&theta_b);
830 if (amrex::ParallelDescriptor::IOProcessor())
839 amrex::Abort(
"Found while writing output: zeta contains nan or inf");
845 for (
int n = 0; n <
ncons; ++n) {
850 if (
comp < 0) {
continue; }
852 amrex::Abort(
"Found while writing output: " +
cons_names[n] +
853 " contains nan or inf");
857 amrex::Abort(
"Found while writing output: velocity u contains nan or inf");
860 amrex::Abort(
"Found while writing output: velocity ubar contains nan or inf");
863 amrex::Abort(
"Found while writing output: velocity v contains nan or inf");
866 amrex::Abort(
"Found while writing output: velocity vbar contains nan or inf");
870 auto bx =
mfi.validbox();
908 if (
bx.contains(IntVect(0,0,0)))
918 Gpu::streamSynchronize();
932 Gpu::streamSynchronize();
946 Gpu::streamSynchronize();
961 Gpu::streamSynchronize();
974 Gpu::streamSynchronize();
986 Gpu::streamSynchronize();
991 nc_plot_var.put(
tmp_pm.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
999 Gpu::streamSynchronize();
1003 nc_plot_var.put(
tmp_pn.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1011 Gpu::streamSynchronize();
1015 nc_plot_var.put(
tmp_f.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1023 Gpu::streamSynchronize();
1028 nc_plot_var.put(
tmp_xr.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1036 Gpu::streamSynchronize();
1040 nc_plot_var.put(
tmp_yr.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1048 Gpu::streamSynchronize();
1051 nc_plot_var.put(
tmp_zeta.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny,
1059 Gpu::streamSynchronize();
1062 nc_plot_var.put(
tmp_mask_rho.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny,
1067 for (
int n = 0; n <
ncons; ++n) {
1068 const std::string
nm = std::string(
"stflux_") +
cons_names[n];
1073 Gpu::streamSynchronize();
1076 nc_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x },
1077 { local_nt, local_ny, local_nx });
1090 Gpu::streamSynchronize();
1093 nc_plot_var.put(
tmp_Tair.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1100 Gpu::streamSynchronize();
1103 nc_plot_var.put(
tmp_Pair.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1121 Gpu::streamSynchronize();
1125 { local_start_nt, local_start_y, local_start_x },
1126 { local_nt, local_ny, local_nx });
1141 Gpu::streamSynchronize();
1145 { local_start_nt, local_start_y, local_start_x },
1146 { local_nt, local_ny, local_nx });
1157 Gpu::streamSynchronize();
1161 { local_start_nt, local_start_y, local_start_x },
1162 { local_nt, local_ny, local_nx });
1173 Gpu::streamSynchronize();
1177 { local_start_nt, local_start_y, local_start_x },
1178 { local_nt, local_ny, local_nx });
1189 Gpu::streamSynchronize();
1193 { local_start_nt, local_start_y, local_start_x },
1194 { local_nt, local_ny, local_nx });
1201 Gpu::streamSynchronize();
1205 { local_start_nt, local_start_y, local_start_x },
1206 { 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 });
1235 for (
int n = 0; n <
ncons; ++n) {
1242 tmp.resize(
tmp_bx, 1, amrex::The_Pinned_Arena());
1244 Gpu::streamSynchronize();
1247 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_z, local_start_y, local_start_x }, { local_nt,
1248 local_nz, local_ny, local_nx });
1261 tmp.resize(
tmp_bx, 1, amrex::The_Pinned_Arena());
1263 Gpu::streamSynchronize();
1266 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_z, local_start_y, local_start_x }, { local_nt,
1267 local_nz, local_ny, local_nx });
1281 Gpu::streamSynchronize();
1284 nc_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1288 for (
int n = 0; n <
ncons; ++n) {
1289 const std::string
nm = std::string(
"diff2_") +
cons_names[n];
1293 Gpu::streamSynchronize();
1296 nc_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1310 Box
bx =
mfi.validbox();
1317 tmp_bx.surroundingNodes(0);
1342 Gpu::streamSynchronize();
1346 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1352 Gpu::streamSynchronize();
1356 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1362 tmp.resize(
tmp_bx, 1, amrex::The_Pinned_Arena());
1364 Gpu::streamSynchronize();
1367 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_z, local_start_y, local_start_x }, { local_nt,
1368 local_nz, local_ny, local_nx });
1375 Gpu::streamSynchronize();
1378 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1384 Gpu::streamSynchronize();
1387 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1393 Gpu::streamSynchronize();
1396 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1405 Box
bx =
mfi.validbox();
1412 tmp_bx.surroundingNodes(1);
1440 Gpu::streamSynchronize();
1444 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1450 Gpu::streamSynchronize();
1454 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1460 tmp.resize(
tmp_bx, 1, amrex::The_Pinned_Arena());
1462 Gpu::streamSynchronize();
1465 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_z, local_start_y, local_start_x }, { local_nt,
1466 local_nz, local_ny, local_nx });
1473 Gpu::streamSynchronize();
1476 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1483 Gpu::streamSynchronize();
1486 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1492 Gpu::streamSynchronize();
1495 nc_plot_var.put(
tmp.dataPtr(), { local_start_nt, local_start_y, local_start_x }, { local_nt, local_ny, local_nx });
1504 Box
bx =
mfi.validbox();
1511 tmp_bx.surroundingNodes(0);
1512 tmp_bx.surroundingNodes(1);
1532 Gpu::streamSynchronize();
1536 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });
1542 Gpu::streamSynchronize();
1546 nc_plot_var.put(
tmp.dataPtr(), { local_start_y, local_start_x }, { local_ny, local_nx });