Download Sonitus BE R1 User Manual
Transcript
const vector <MeshTypes::BCdetails <int> > &BCnum, const vector < ComplexMath_std::complex <double> > &BCval, const ComplexMath_std::complex <double> &ST, const vector <MeshTypes::Node <double> > &SL, vector <double> &OutputdB, vector <vector <double> > &OutputVar); The matrices are initialised, for F = A Sigma, where F are the array of boundary conditions, Sigma is the vectors of unknown potentials and A the matrix of boundary integrals. For every element, we perform a boundary integral for every other element. As the elements are all at different angles to each other, we perform a Jacobian transformation based on non-dimensionalised coordinates on the surface of one element to obtain the integral. For the non-trivial solution, we must also add the boundary integral contribution of a discrete point source, which is calculated using the IntBHelm function. We then solve the system of equations and based on this solution, generate a series of physical parameters at every single data recovery point. In order to calculate the integral term for each element, we call the routine IntSourceHelm. This can be described as finding the contribution to the node i from a source placed on element j. Therefore we are observing the contribution of element j. This is determined by examining the amplitudes of the fundamental solutions at each of the element j's node locations. ComplexMath_std::complex <double> IntSourceHelm( const MeshTypes::Node <double> &iNode, const MeshTypes::Element <int> &ObsElemStruct, const MeshTypes::Node <double> &ObsNode1, const MeshTypes::Node <double> &ObsNode2, const MeshTypes::Node <double> &ObsNode3, const MeshTypes::Node <double> &ObsNode4, const double &Freq, const double &C,const double &rho); The code first calculates the location of the node i. It then immediately branches into a loop depending on whether the element j is triangular or quadrilateral. This then follows the same concept described in section VI. The value of u* for each node making up element j is obtained by examination of the distance between this element’s node and the original i node. For each node i, the contribution to the boundary condition value must be included. This routine calculates the required contribution of the pressure at node i from the source. ComplexMath_std::complex <double> IntBHelm( const MeshTypes::Node <double> &iNode, const ComplexMath_std::complex <double> &Bsourcestr, const MeshTypes::Node <double> &Bsourceloc, Sonitus BE Page 45 of 58