Program Listing for File viscosity.hpp
↰ Return to documentation for file (hydro/viscosity.hpp
)
// ***********************************************************************************
// Idefix MHD astrophysical code
// Copyright(C) 2020-2022 Geoffroy R. J. Lesur <geoffroy.lesur@univ-grenoble-alpes.fr>
// and other code contributors
// Licensed under CeCILL 2.1 License, see COPYING for more information
// ***********************************************************************************
#ifndef HYDRO_VISCOSITY_HPP_
#define HYDRO_VISCOSITY_HPP_
#include "idefix.hpp"
#include "input.hpp"
#include "grid.hpp"
#include "hydro_defs.hpp"
// Forward class hydro declaration
class Hydro;
class DataBlock;
using ViscousDiffusivityFunc = void (*) (DataBlock &, const real t,
IdefixArray3D<real> &, IdefixArray3D<real> &);
class Viscosity {
public:
Viscosity(); // Default (empty) constructor
void Init(Input &, Grid &, Hydro *); // Initialisation
void ShowConfig(); // print configuration
void AddViscousFlux(int, const real);
// Enroll user-defined viscous diffusivity
void EnrollViscousDiffusivity(ViscousDiffusivityFunc);
IdefixArray4D<real> viscSrc; // Source terms of the viscous operator
IdefixArray3D<real> eta1Arr;
IdefixArray3D<real> eta2Arr;
// pre-computed geometrical factors in non-cartesian geometry
IdefixArray1D<real> one_dmu;
private:
Hydro *hydro; // My parent hydro object
// type of viscosity function
HydroModuleStatus haveViscosity{Disabled};
ViscousDiffusivityFunc viscousDiffusivityFunc;
// constant diffusion coefficient (when needed)
real eta1, eta2;
};
#endif // HYDRO_VISCOSITY_HPP_