Skip to content

Commit

Permalink
Format code
Browse files Browse the repository at this point in the history
  • Loading branch information
mwarusz committed Feb 27, 2024
1 parent 206a90e commit fe7bf3f
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 42 deletions.
25 changes: 11 additions & 14 deletions dynamics/spam/Dycore.h
Original file line number Diff line number Diff line change
Expand Up @@ -243,26 +243,24 @@ class Dycore {

// adjust crm_per_phys and dtcrm if needed

if(params.adjust_crm_per_phys_using_vert_cfl)
{
tendencies.adjust_crm_per_phys_using_vert_cfl(params, prognostic_vars);
}
//tendencies.a
// Time stepping loop
if (params.adjust_crm_per_phys_using_vert_cfl) {
tendencies.adjust_crm_per_phys_using_vert_cfl(params, prognostic_vars);
}
// tendencies.a
// Time stepping loop
debug_print("start time stepping loop", par.masterproc);
for (uint nstep = 0; nstep < params.crm_per_phys; nstep++) {
yakl::fence();

time_integrator->step_forward(params.dtcrm);

if(params.clip_vertical_velocities)
{
tendencies.clip_vertical_velocities(params, prognostic_vars);
}
if (params.clip_vertical_velocities) {
tendencies.clip_vertical_velocities(params, prognostic_vars);
}

if (params.clip_negative_densities) {
tendencies.clip_negative_densities(prognostic_vars);
}
if (params.clip_negative_densities) {
tendencies.clip_negative_densities(prognostic_vars);
}

#if defined PAMC_AN || defined PAMC_MAN
if (params.check_anelastic_constraint) {
Expand Down Expand Up @@ -299,7 +297,6 @@ tendencies.clip_vertical_velocities(params, prognostic_vars);
}
prevstep += params.crm_per_phys;


// convert dynamics state to Coupler state
tendencies.convert_dynamics_to_coupler_state(
coupler, prognostic_vars, constant_vars, params.couple_wind,
Expand Down
53 changes: 29 additions & 24 deletions dynamics/spam/src/models/extrudedmodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -396,8 +396,8 @@ class ModelTendencies : public ExtrudedTendencies {
#endif
}

void clip_vertical_velocities(ModelParameters &params, FieldSet<nprognostic> &x)
{
void clip_vertical_velocities(ModelParameters &params,
FieldSet<nprognostic> &x) {
real max_w = params.max_w;

const auto &primal_topology = primal_geometry.topology;
Expand All @@ -412,24 +412,28 @@ void clip_vertical_velocities(ModelParameters &params, FieldSet<nprognostic> &x)
SimpleBounds<4>(primal_topology.nl, primal_topology.n_cells_y,
primal_topology.n_cells_x, primal_topology.nens),
YAKL_LAMBDA(int k, int j, int i, int n) {
real wedgelength = primal_geometry.get_area_01entity(k + pks, j + pjs, i + pis, n);
wvar(0, k + pks, j + pjs, i + pis, n) =
std::max(-max_w * wedgelength, std::min(max_w * wedgelength, wvar(0, k + pks, j + pjs, i + pis, n)));
real wedgelength =
primal_geometry.get_area_01entity(k + pks, j + pjs, i + pis, n);
wvar(0, k + pks, j + pjs, i + pis, n) =
std::max(-max_w * wedgelength,
std::min(max_w * wedgelength,
wvar(0, k + pks, j + pjs, i + pis, n)));
});
}

void adjust_crm_per_phys_using_vert_cfl(ModelParameters &params, FieldSet<nprognostic> &x)
{
//cfl = c * dt / dx
//dt = cfl * dx / c
void adjust_crm_per_phys_using_vert_cfl(ModelParameters &params,
FieldSet<nprognostic> &x) {
// cfl = c * dt / dx
// dt = cfl * dx / c

const auto &primal_topology = primal_geometry.topology;
const auto wvar = x.fields_arr[WVAR].data;
const int pis = primal_topology.is;
const int pjs = primal_topology.js;
const int pks = primal_topology.ks;

real4d min_dt_4d("min_dt_4d", primal_topology.nl, primal_topology.n_cells_y, primal_topology.n_cells_x, primal_topology.nens);
real4d min_dt_4d("min_dt_4d", primal_topology.nl, primal_topology.n_cells_y,
primal_topology.n_cells_x, primal_topology.nens);

real target_cfl = params.target_cfl;
real eps = 1e-8;
Expand All @@ -438,23 +442,24 @@ void adjust_crm_per_phys_using_vert_cfl(ModelParameters &params, FieldSet<nprogn
SimpleBounds<4>(primal_topology.nl, primal_topology.n_cells_y,
primal_topology.n_cells_x, primal_topology.nens),
YAKL_LAMBDA(int k, int j, int i, int n) {
real wedgelength = primal_geometry.get_area_01entity(k + pks, j + pjs, i + pis, n);
real wval = std::abs(wvar(0, k + pks, j + pjs, i + pis, n)) / wedgelength;
min_dt_4d(k, j, i, n) = target_cfl * wedgelength / (wval + eps);
real wedgelength =
primal_geometry.get_area_01entity(k + pks, j + pjs, i + pis, n);
real wval =
std::abs(wvar(0, k + pks, j + pjs, i + pis, n)) / wedgelength;
min_dt_4d(k, j, i, n) = target_cfl * wedgelength / (wval + eps);
});
real min_dt = yakl::intrinsics::minval( min_dt_4d );
real adj_min_dt = std::min(params.dtcrm, min_dt);
real min_dt = yakl::intrinsics::minval(min_dt_4d);
real adj_min_dt = std::min(params.dtcrm, min_dt);

params.crm_per_phys = (int) std::ceil(params.dt_crm_phys / adj_min_dt);
params.dtcrm = params.dt_crm_phys / params.crm_per_phys;
params.crm_per_phys = (int)std::ceil(params.dt_crm_phys / adj_min_dt);
params.dtcrm = params.dt_crm_phys / params.crm_per_phys;

// std::cout << "min_dt: " << min_dt << "\n";
// std::cout << "adj_min_dt: " << adj_min_dt << "\n";
// std::cout << "dtcrm: " << params.dtcrm << "\n";
// std::cout << "dt_crm_phys: " << params.dt_crm_phys << "\n";
// std::cout << "crm per phys: " << params.crm_per_phys << "\n";

}
// std::cout << "min_dt: " << min_dt << "\n";
// std::cout << "adj_min_dt: " << adj_min_dt << "\n";
// std::cout << "dtcrm: " << params.dtcrm << "\n";
// std::cout << "dt_crm_phys: " << params.dt_crm_phys << "\n";
// std::cout << "crm per phys: " << params.crm_per_phys << "\n";
}

void convert_dynamics_to_coupler_state(PamCoupler &coupler,
const FieldSet<nprognostic> &prog_vars,
Expand Down
8 changes: 4 additions & 4 deletions dynamics/spam/src/models/layermodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,11 @@ class ModelTendencies : public Tendencies {
}
}

void clip_vertical_velocities(ModelParameters &params, FieldSet<nprognostic> &x)
{}
void clip_vertical_velocities(ModelParameters &params,
FieldSet<nprognostic> &x) {}

void adjust_crm_per_phys_using_vert_cfl(ModelParameters &params, FieldSet<nprognostic> &x)
{}
void adjust_crm_per_phys_using_vert_cfl(ModelParameters &params,
FieldSet<nprognostic> &x) {}

void compute_constants(FieldSet<nconstant> &const_vars,
FieldSet<nprognostic> &x) override {}
Expand Down

0 comments on commit fe7bf3f

Please sign in to comment.