18template <
typename ScalarType >
32 const ScalarType& reference_viscosity = 1.0,
33 const ScalarType& viscosity_lower_bound = std::numeric_limits< ScalarType >::lowest(),
34 const ScalarType& viscosity_upper_bound = std::numeric_limits< ScalarType >::max() )
35 : radial_viscosity_profile_( radial_viscosity_profile )
36 , reference_viscosity_( reference_viscosity )
37 , one_over_reference_viscosity_( 1.0 / reference_viscosity_ )
38 , viscosity_lower_bound_( viscosity_lower_bound )
39 , viscosity_upper_bound_( viscosity_upper_bound )
47 "viscosity_interpolation",
48 Kokkos::MDRangePolicy(
50 { dst_grid.extent( 0 ), dst_grid.extent( 1 ), dst_grid.extent( 2 ), dst_grid.extent( 3 ) } ),
56 KOKKOS_INLINE_FUNCTION
57 void operator()(
const int local_subdomain_id,
const int x,
const int y,
const int r )
const
59 auto visc = radial_viscosity_profile_( local_subdomain_id, r );
61 if ( visc < viscosity_lower_bound_ )
63 visc = viscosity_lower_bound_;
66 if ( visc > viscosity_upper_bound_ )
68 visc = viscosity_upper_bound_;
71 data_( local_subdomain_id, x, y, r ) = one_over_reference_viscosity_ * visc;
76 ScalarType reference_viscosity_;
77 ScalarType one_over_reference_viscosity_;
78 ScalarType viscosity_lower_bound_;
79 ScalarType viscosity_upper_bound_;
Helper class for interpolation of purely radially dependent viscosity profiles.
Definition viscosity_interpolation.hpp:20
void operator()(const int local_subdomain_id, const int x, const int y, const int r) const
Call interpolate() to run this kernel.
Definition viscosity_interpolation.hpp:57
RadialProfileViscosityInterpolator(const grid::Grid2DDataScalar< ScalarType > &radial_viscosity_profile, const ScalarType &reference_viscosity=1.0, const ScalarType &viscosity_lower_bound=std::numeric_limits< ScalarType >::lowest(), const ScalarType &viscosity_upper_bound=std::numeric_limits< ScalarType >::max())
Creates an interpolator class.
Definition viscosity_interpolation.hpp:30
void interpolate(const grid::Grid4DDataScalar< ScalarType > &dst_grid)
Runs a kernel to interpolate the viscosity profile into a full grid.
Definition viscosity_interpolation.hpp:43
Definition viscosity_interpolation.hpp:6
Kokkos::View< ScalarType ****, Layout > Grid4DDataScalar
Definition grid_types.hpp:25
Kokkos::View< ScalarType **, Layout > Grid2DDataScalar
Definition grid_types.hpp:19