30 using namespace Foam::mathematicalConstant;
36 namespace solidBodyMotionFunctions
46 Foam::solidBodyMotionFunctions::SDA::SDA
53 CofG_(SBMFCoeffs_.lookup(
"CofG"))
69 scalar time = time_.value();
71 scalar Tpi = Tp_ + dTp_*(time/dTi_);
76 scalar u = Tp_ + r*time;
77 scalar phr = 2*
pi*((Tp_/u - 1) +
log(
mag(u)) -
log(Tp_))/r;
80 scalar phs = phr +
pi;
83 scalar phh = phr + pi/2;
85 scalar rollA =
max(rollAmax_*
exp(-
sqr(Tpi - Tpn_)/(2*Q_)), rollAmin_);
90 swayA_*(
sin(wr*time + phs) -
sin(phs)),
91 heaveA_*(
sin(wr*time + phh) -
sin(phh))
96 Info<<
"solidBodyMotionFunctions::SDA::transformation(): "
97 <<
"Time = " << time <<
" transformation: " << TR <<
endl;
107 SBMFCoeffs_.lookup(
"CofG") >> CofG_;
108 SBMFCoeffs_.lookup(
"lamda") >> lamda_;
109 SBMFCoeffs_.lookup(
"rollAmax") >> rollAmax_;
110 SBMFCoeffs_.lookup(
"rollAmin") >> rollAmin_;
111 SBMFCoeffs_.lookup(
"heaveA") >> heaveA_;
112 SBMFCoeffs_.lookup(
"swayA") >> swayA_;
113 SBMFCoeffs_.lookup(
"Q") >> Q_;
114 SBMFCoeffs_.lookup(
"Tp") >> Tp_;
115 SBMFCoeffs_.lookup(
"Tpn") >> Tpn_;
116 SBMFCoeffs_.lookup(
"dTi") >> dTi_;
117 SBMFCoeffs_.lookup(
"dTp") >> dTp_;
120 if (lamda_ > 1 + SMALL)
125 Tpn_ /=
sqrt(lamda_);
126 dTi_ /=
sqrt(lamda_);
127 dTp_ /=
sqrt(lamda_);