The process of designing an appropriate drag force is given as an example here. We will outline the process of designing the Ergun drag force,
F = 150.0*e*nu*rho/(pow(e*D, 2.0)) + 1.75*rho()*Ur/(e*D)
where we need to work out both porosity e and the fluid velocity Ur = U_MD-U_CFD. A far more detailed version is given in the next section. The minimal changes are given here, add the following to the CPL_force.h header file,
class CPLForceErgun : public CPLForceGranular {
public:
//Constructors
using CPLForceGranular::CPLForceGranular;
//Force specific things
double drag_coefficient(double r[], double D, std::vector<double> Ui_v);
};
and the following code to CPL_force.cpp which changes the drag coefficient
double CPLForceErgun::drag_coefficient(double r[], double D, std::vector<double> Ui_v) {
double eps = CPLForceGranular::get_eps(r);
if (eps == 0.0) {
return 0.0;
} else {
return 150.0*eps*(mu/rho)*rho/(pow(eps*D, 2.0)) + 1.75*rho/(eps*D);
}
}
That's it, provided the force can be defined in terms of position, D and relative velocity Ur with all fields from pre-force eSum and vSums.