From 65398ad5f9d746649dd39c0a95485590d5f3be9b Mon Sep 17 00:00:00 2001 From: Rene Gassmoeller Date: Wed, 28 Jun 2023 16:15:21 -0400 Subject: [PATCH] Fix warnings hollow sphere --- benchmarks/hollow_sphere/hollow_sphere.cc | 120 ++++++++++++++-------- 1 file changed, 78 insertions(+), 42 deletions(-) diff --git a/benchmarks/hollow_sphere/hollow_sphere.cc b/benchmarks/hollow_sphere/hollow_sphere.cc index d3e8a610a01..6aa099abff1 100644 --- a/benchmarks/hollow_sphere/hollow_sphere.cc +++ b/benchmarks/hollow_sphere/hollow_sphere.cc @@ -281,46 +281,7 @@ namespace aspect * @{ */ void evaluate(const MaterialModel::MaterialModelInputs &in, - MaterialModel::MaterialModelOutputs &out) const override - { - for (unsigned int i=0; i < in.n_evaluation_points(); ++i) - { - const Point &pos = in.position[i]; - const std::array spos = aspect::Utilities::Coordinates::cartesian_to_spherical_coordinates(pos); - const double r = spos[0]; - const double mu = pow(r,mmm+1); - out.viscosities[i] = mu; - - const double theta=spos[2]; - - const double gammma = 1.0; - const double R1 = 0.5; - const double R2 = 1.0; - - double alpha,beta,rho; - const double rho_0 = 1000.; - - if (mmm == -1) - { - alpha = -gammma*(pow(R2,3)-pow(R1,3))/(pow(R2,3)*log(R1)-pow(R1,3)*log(R2)); - beta = -3*gammma*(log(R2)-log(R1))/(pow(R1,3)*log(R2)-pow(R2,3)*log(R1)) ; - rho = -(alpha/pow(r,4)*(8*log(r)-6) + 8./3.*beta/r+8*gammma/pow(r,4))*cos(theta) + rho_0; - } - else - { - alpha=gammma*(mmm+1)*(pow(R1,-3)-pow(R2,-3))/(pow(R1,-mmm-4)-pow(R2,-mmm-4)); - beta=-3*gammma*(pow(R1,mmm+1)-pow(R2,mmm+1))/(pow(R1,mmm+4)-pow(R2,mmm+4)); - rho= -(2*alpha*pow(r,-4)*(mmm+3)/(mmm+1)*(mmm-1)-2*beta/3*(mmm-1)*(mmm+3)*pow(r,mmm)-mmm*(mmm+5)*2*gammma*pow(r,mmm-3) )*cos(theta) + rho_0; - } - - out.densities[i] = rho; - - out.specific_heat[i] = 0; - out.thermal_conductivities[i] = 0.0; - out.compressibilities[i] = 0; - out.thermal_expansion_coefficients[i] = 0; - } - } + MaterialModel::MaterialModelOutputs &out) const override; /** * @} @@ -370,6 +331,8 @@ namespace aspect double mmm; }; + + template bool HollowSphereMaterial:: @@ -378,6 +341,67 @@ namespace aspect return false; } + + template <> + void + HollowSphereMaterial<2>:: + evaluate (const MaterialModel::MaterialModelInputs<2> &/*in*/, + MaterialModel::MaterialModelOutputs<2> &/*out*/) const + { + Assert (false, ExcNotImplemented()); + } + + + + template <> + void + HollowSphereMaterial<3>:: + evaluate (const MaterialModel::MaterialModelInputs<3> &in, + MaterialModel::MaterialModelOutputs<3> &out) const + { + const unsigned int dim = 3; + + for (unsigned int i=0; i < in.n_evaluation_points(); ++i) + { + const Point &pos = in.position[i]; + const std::array spos = aspect::Utilities::Coordinates::cartesian_to_spherical_coordinates(pos); + const double r = spos[0]; + const double mu = pow(r,mmm+1); + out.viscosities[i] = mu; + + const double theta=spos[2]; + + const double gammma = 1.0; + const double R1 = 0.5; + const double R2 = 1.0; + + double alpha,beta,rho; + const double rho_0 = 1000.; + + if (mmm == -1) + { + alpha = -gammma*(pow(R2,3)-pow(R1,3))/(pow(R2,3)*log(R1)-pow(R1,3)*log(R2)); + beta = -3*gammma*(log(R2)-log(R1))/(pow(R1,3)*log(R2)-pow(R2,3)*log(R1)) ; + rho = -(alpha/pow(r,4)*(8*log(r)-6) + 8./3.*beta/r+8*gammma/pow(r,4))*cos(theta) + rho_0; + } + else + { + alpha=gammma*(mmm+1)*(pow(R1,-3)-pow(R2,-3))/(pow(R1,-mmm-4)-pow(R2,-mmm-4)); + beta=-3*gammma*(pow(R1,mmm+1)-pow(R2,mmm+1))/(pow(R1,mmm+4)-pow(R2,mmm+4)); + rho= -(2*alpha*pow(r,-4)*(mmm+3)/(mmm+1)*(mmm-1)-2*beta/3*(mmm-1)*(mmm+3)*pow(r,mmm)-mmm*(mmm+5)*2*gammma*pow(r,mmm-3) )*cos(theta) + rho_0; + } + + out.densities[i] = rho; + + out.specific_heat[i] = 0; + out.thermal_conductivities[i] = 0.0; + out.compressibilities[i] = 0; + out.thermal_expansion_coefficients[i] = 0; + } + } + + + template void HollowSphereMaterial::declare_parameters (ParameterHandler &prm) @@ -555,14 +579,26 @@ namespace aspect return std::list (1, "dynamic topography"); } + + template <> + double + HollowSpherePostprocessor<2>::compute_dynamic_topography_error () const + { + Assert (false, ExcNotImplemented()); + return 0.0; + } + + + /** * Integrate the difference between the analytical and numerical * solutions for dynamic topography. */ - template + template <> double - HollowSpherePostprocessor::compute_dynamic_topography_error() const + HollowSpherePostprocessor<3>::compute_dynamic_topography_error() const { + const unsigned int dim = 3; const Postprocess::DynamicTopography &dynamic_topography = this->get_postprocess_manager().template get_matching_postprocessor>();