Makes now special helical forcing vector.
This commit is contained in:
@@ -60,6 +60,44 @@ print_diagnostics(const AcMesh& mesh, const int& step, const AcReal& dt)
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//PC Manual Eq. 223
|
||||||
|
static inline void
|
||||||
|
helical_forcing_special_vector(AcReal3* ff_hel_re, AcReal3* ff_hel_im, const AcReal3 k_force, const AcReal3 e_force, const AcReal relhel)
|
||||||
|
{
|
||||||
|
// k dot e
|
||||||
|
AcReal3 kdote;
|
||||||
|
kdote.x = k_force.x * e_force.x;
|
||||||
|
kdote.y = k_force.y * e_force.y;
|
||||||
|
kdote.z = k_force.z * e_force.z;
|
||||||
|
|
||||||
|
// k cross e
|
||||||
|
AcReal3 k_cross_e;
|
||||||
|
k_cross_e.x=k_force.y*e_force.z-k_force.z*e_force.y;
|
||||||
|
k_cross_e.y=k_force.z*e_force.x-k_force.x*e_force.z;
|
||||||
|
k_cross_e.z=k_force.x*e_force.y-k_force.y*e_force.x;
|
||||||
|
|
||||||
|
// k cross k cross e
|
||||||
|
AcReal3 k_cross_k_cross_e;
|
||||||
|
k_cross_k_cross_e.x=k_force.y*k_cross_e.z-k_force.z*k_cross_e.y;
|
||||||
|
k_cross_k_cross_e.y=k_force.z*k_cross_e.x-k_force.x*k_cross_e.z;
|
||||||
|
k_cross_k_cross_e.z=k_force.x*k_cross_e.y-k_force.y*k_cross_e.x;
|
||||||
|
|
||||||
|
// abs(k)
|
||||||
|
AcReal kabs = sqrt(k_force.x*k_force.x + k_force.y*k_force.y + k_force.z*k_force.z);
|
||||||
|
|
||||||
|
AcReal denominator = sqrt(AcReal(1.0) + relhel*relhel)*(kabs*kabs)
|
||||||
|
*sqrt(AcReal(1.0) - (kdote.x*kdote.x + kdote.y*kdote.y + kdote.z*kdote.z)/(kabs*kabs));
|
||||||
|
|
||||||
|
*ff_hel_re = (AcReal3){-relhel*kabs*k_cross_e.x/denominator,
|
||||||
|
-relhel*kabs*k_cross_e.y/denominator,
|
||||||
|
-relhel*kabs*k_cross_e.z/denominator};
|
||||||
|
|
||||||
|
*ff_hel_im = (AcReal3){k_cross_k_cross_e.x/denominator,
|
||||||
|
k_cross_k_cross_e.y/denominator,
|
||||||
|
k_cross_k_cross_e.z/denominator};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Write all setting info into a separate ascii file. This is done to guarantee
|
// Write all setting info into a separate ascii file. This is done to guarantee
|
||||||
// that we have the data specifi information in the thing, even though in
|
// that we have the data specifi information in the thing, even though in
|
||||||
// principle these things are in the astaroth.conf.
|
// principle these things are in the astaroth.conf.
|
||||||
@@ -248,9 +286,13 @@ run_simulation(void)
|
|||||||
//Placeholders until determined properly
|
//Placeholders until determined properly
|
||||||
AcReal magnitude = 0.05;
|
AcReal magnitude = 0.05;
|
||||||
AcReal phase = 0.79;
|
AcReal phase = 0.79;
|
||||||
|
AcReal relhel = 0.5;
|
||||||
AcReal3 k_force = (AcReal3){2.0, 0.0, 0.0};
|
AcReal3 k_force = (AcReal3){2.0, 0.0, 0.0};
|
||||||
AcReal3 ff_hel_re = (AcReal3){0.0, 0.5, 0.0};
|
AcReal3 e_force = (AcReal3){0.0, 2.0, 0.0};
|
||||||
AcReal3 ff_hel_im = (AcReal3){0.0, 0.8666, 0.0};
|
AcReal3 ff_hel_re, ff_hel_im;
|
||||||
|
helical_forcing_special_vector(&ff_hel_re, &ff_hel_im, k_force, e_force, relhel);
|
||||||
|
//AcReal3 ff_hel_re = (AcReal3){0.0, 0.5, 0.0};
|
||||||
|
//AcReal3 ff_hel_im = (AcReal3){0.0, 0.8666, 0.0};
|
||||||
acForcingVec(magnitude, k_force, ff_hel_re,ff_hel_im, phase);
|
acForcingVec(magnitude, k_force, ff_hel_re,ff_hel_im, phase);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user