Commit 42f86714 by Axel Modave

Add analytic mode-by-mode solution (AcousticFieldSoftCylinder)

parent 4d347291
Pipeline #926 passed with stage
in 46 seconds
......@@ -1130,6 +1130,7 @@ struct StringXFunction2Nbr F_Function[] = { /* #Par #Arg */
{"AcousticFieldHardSphere", (CAST)F_AcousticFieldHardSphere, 2, 1 },
{"RCSHardSphere", (CAST)F_RCSHardSphere, 2, 1 },
{"AcousticFieldSoftCylinder", (CAST)F_AcousticFieldSoftCylinder, 2, 1 },
{"AcousticFieldSoftCylinderByMode", (CAST)F_AcousticFieldSoftCylinderByMode, 3, 1 },
{"AcousticFieldSoftCylinderABC", (CAST)F_AcousticFieldSoftCylinderABC, 5, 1 },
{"DrAcousticFieldSoftCylinder", (CAST)F_DrAcousticFieldSoftCylinder, 2, 1 },
{"RCSSoftCylinder", (CAST)F_RCSSoftCylinder, 2, 1 },
......
......@@ -43,6 +43,7 @@ void F_RCSSoftSphere(F_ARG) ;
void F_AcousticFieldHardSphere(F_ARG) ;
void F_RCSHardSphere(F_ARG) ;
void F_AcousticFieldSoftCylinder(F_ARG) ;
void F_AcousticFieldSoftCylinderByMode(F_ARG) ;
void F_AcousticFieldSoftCylinderABC(F_ARG) ;
void F_DrAcousticFieldSoftCylinder(F_ARG) ;
void F_RCSSoftCylinder(F_ARG) ;
......
......@@ -1636,6 +1636,31 @@ void F_JFIE_TransZPolCyl(F_ARG)
}
/* Scattering by acoustically soft circular cylinder of radius R,
under plane wave incidence e^{ikx}. Returns the mode 'm' of
the scatterered field outside */
void F_AcousticFieldSoftCylinderByMode(F_ARG)
{
double theta = atan2(A->Val[1], A->Val[0]) ;
double r = sqrt(A->Val[0]*A->Val[0] + A->Val[1]*A->Val[1]) ;
double k = Fct->Para[0] ;
double R = Fct->Para[1] ;
int mode = Fct->Para[2] ;
double kr = k*r;
double kR = k*R;
std::complex<double> I(0,1);
std::complex<double> HnkR( jn(mode,kR), yn(mode,kR) );
std::complex<double> Hnkr( jn(mode,kr), yn(mode,kr) );
std::complex<double> tmp1 = std::pow(I,mode) * std::real(HnkR) * Hnkr/HnkR;
double tmp2 = - (!mode ? 1 : 2.) * cos(mode*theta);
double vr = tmp2 * std::real(tmp1);
double vi = tmp2 * std::imag(tmp1);
V->Val[0] = vr;
V->Val[MAX_DIM] = vi;
V->Type = SCALAR ;
}
/* Scattering by acoustically soft circular cylinder of radius R,
under plane wave incidence e^{ikx}. Returns scatterered field
outside */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment