scalar cnoidalFirst::ddxPd ( const point & x, const scalar & time, const vector & unitVector ) const { scalar Z(returnZ(x)); scalar arg(argument(x,time)); scalar snn(0.0), cnn(0.0), dnn(0.0); gsl_sf_elljac_e( arg, m_, &snn, &cnn, &dnn); scalar ddxPd(0); ddxPd = rhoWater_ * Foam::mag(g_) * ( eta_x(snn, cnn, dnn) + 1.0 / 2.0 * Foam::pow(h_, 2.0) * (1 - Foam::pow((Z + h_) / h_, 2.0)) * eta_xxx(snn, cnn, dnn) ); ddxPd *= factor(time); // Info << "ddxPd still isn't implemented. Need to think about the gradient on arbitrary directed mesh with arbitrary wave number vector! and arbitrary g-direction!!!" << endl; return ddxPd; }
scalar stokesFirstStanding::ddxPd ( const point& x, const scalar& time, const vector& unitVector ) const { scalar Z(returnZ(x)); scalar arg1(omega_*time - (k_ & x) + phi_); scalar arg2(omega_*time + (k_ & x) + phi_); scalar ddxPd(0); ddxPd = ( rhoWater_*mag(g_)*K_*H_/2.0*Foam::cosh(K_*(Z + h_)) /Foam::cosh(K_*h_)*Foam::sin(arg1) - rhoWater_*mag(g_)*K_*H_/2.0*Foam::cosh(K_*(Z + h_)) /Foam::cosh(K_*h_)*Foam::sin(arg2) )*factor(time); return ddxPd; }