Skip to content

Commit

Permalink
fixes for dt adjustment
Browse files Browse the repository at this point in the history
  • Loading branch information
celdredsandia committed Dec 20, 2023
1 parent c1a932d commit 206a90e
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions dynamics/spam/src/models/extrudedmodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -432,18 +432,28 @@ void adjust_crm_per_phys_using_vert_cfl(ModelParameters &params, FieldSet<nprogn
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;
parallel_for(
"compute adjusted dt",
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;
min_dt_4d(k, j, i, n) = target_cfl * wedgelength / (wval + eps);
});
real min_dt = yakl::intrinsics::minval( min_dt_4d );
params.crm_per_phys = (int) std::ceil(params.dt_crm_phys / min_dt);
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;

// 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,
Expand Down

0 comments on commit 206a90e

Please sign in to comment.