Skip to content

Commit 7dc692b

Browse files
committed
add qforder parameter for quadrature order of near-field BEM integrals
1 parent 5a9df83 commit 7dc692b

5 files changed

Lines changed: 99 additions & 94 deletions

File tree

3rdparty/getall

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,10 +185,10 @@ download('hpddm','https://codeload.github.com/hpddm/hpddm/zip/7113b9a6b77fceee3f
185185
'hpddm.zip',
186186
'6910b7b974f0b60d9c247c666e7f3862');
187187

188-
download('bemtool','https://github.com/PierreMarchand20/BemTool/archive/661cf0ed86998a21738c421fa14d01a355536b68.zip',
188+
download('bemtool','https://github.com/PierreMarchand20/BemTool/archive/adf3bfc8d54dcc5f5893ea2d85ba2c8adb36a0b0.zip',
189189
'https://github.com/PierreMarchand20/BemTool',
190190
'bemtool.zip',
191-
'ee8a3f65ad4f2704b3212c2409540e9d');
191+
'2d20dbde8d74965044177b1130594f81');
192192

193193
download('Boost','https://www.ljll.fr/~tournier/boost_for_bemtool.tar.gz',
194194
'https://www.boost.org',

plugin/mpi/PETSc-code.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ void dispatch(MeshBemtool *mesh, bemtool::Geometry *node, int VFBEM, Stack stack
129129
pair<BemKernel*, std::complex<double>> kernel = getBemKernel(stack, bargs);
130130
BemKernel *Ker = kernel.first;
131131
std::complex<double> alpha = kernel.second;
132-
ff_BIO_Generator_Maxwell<PetscScalar>(ctx->generator,Ker,*ctx->dof,alpha);
132+
ff_BIO_Generator_Maxwell<PetscScalar>(ctx->generator,Ker,*ctx->dof,alpha,12);
133133
}
134134
else if (VFBEM == 2) {
135135
BemPotential *Pot = getBemPotential(stack, bargs);
@@ -182,7 +182,7 @@ void dispatch(MeshBemtool *mesh, bemtool::Geometry *node, int VFBEM, Stack stack
182182
pair<BemKernel*, std::complex<double>> kernel = getBemKernel(stack, bargs);
183183
BemKernel *Ker = kernel.first;
184184
std::complex<double> alpha = kernel.second;
185-
ff_BIO_Generator<PetscScalar,P,Mesh1>(ctx->generator,Ker,*ctx->dof,alpha);
185+
ff_BIO_Generator<PetscScalar,P,Mesh1>(ctx->generator,Ker,*ctx->dof,alpha,12);
186186
}
187187
else if (VFBEM == 2) {
188188
BemPotential *Pot = getBemPotential(stack, bargs);

plugin/mpi/bem.hpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ class HMatrixImpl : public HMatrixVirt<K> {
207207
struct Data_Bem_Solver
208208
: public Data_Sparse_Solver {
209209
double eta;
210-
int maxleafsize,mintargetdepth,minsourcedepth;
210+
int maxleafsize,mintargetdepth,minsourcedepth,qforder;
211211
string compressor, initialclustering, clusteringdirections;
212212
bool recompress, adaptiveclustering, hluinplace;
213213

@@ -222,7 +222,8 @@ struct Data_Bem_Solver
222222
initialclustering("default"),
223223
clusteringdirections(!ff_htoolClusteringdirections?"pca":"boundingbox"),
224224
adaptiveclustering(ff_htoolAdaptiveclustering),
225-
hluinplace(false)
225+
hluinplace(false),
226+
qforder(12)
226227

227228
{epsilon=ff_htoolEpsilon;}
228229

@@ -318,6 +319,7 @@ inline void SetEnd_Data_Bem_Solver(Stack stack,Data_Bem_Solver & ds,Expression c
318319
if (nargs[++kk]) ds.clusteringdirections = *GetAny<string*>((*nargs[kk])(stack));
319320
if (nargs[++kk]) ds.adaptiveclustering = GetAny<bool>((*nargs[kk])(stack));
320321
if (nargs[++kk]) ds.hluinplace = GetAny<bool>((*nargs[kk])(stack));
322+
if (nargs[++kk]) ds.qforder = GetAny<int>((*nargs[kk])(stack));
321323
ffassert(++kk == n_name_param);
322324
}
323325
}
@@ -489,6 +491,8 @@ void creationHMatrixtoBEMForm(const FESpace1 * Uh, const FESpace2 * Vh, const in
489491
// compression infogfg
490492

491493
MPI_Comm comm = ds.commworld ? *(MPI_Comm*)ds.commworld : MPI_COMM_WORLD;
494+
495+
int qforder = ds.qforder;
492496

493497
// source/target meshes
494498
const SMesh & ThU =Uh->Th; // line
@@ -645,34 +649,34 @@ void creationHMatrixtoBEMForm(const FESpace1 * Uh, const FESpace2 * Vh, const in
645649
if (SP0) {
646650
bemtool::Dof<P0> dof(mesh);
647651
if (samemesh)
648-
ff_BIO_Generator<R,P0,P0,SMesh,SMesh>(generator,Ker,dof,dof,alpha);
652+
ff_BIO_Generator<R,P0,P0,SMesh,SMesh>(generator,Ker,dof,dof,alpha,qforder);
649653
else {
650654
bemtool::Dof<P0X> dofX(meshX);
651-
ff_BIO_Generator<R,P0X,P0,TMesh,SMesh>(generator,Ker,dofX,dof,alpha);
655+
ff_BIO_Generator<R,P0X,P0,TMesh,SMesh>(generator,Ker,dofX,dof,alpha,qforder);
652656
}
653657
}
654658
else if (SP1) {
655659
bemtool::Dof<P1> dof(mesh,true);
656660
if (samemesh)
657-
ff_BIO_Generator<R,P1,P1,SMesh,SMesh>(generator,Ker,dof,dof,alpha);
661+
ff_BIO_Generator<R,P1,P1,SMesh,SMesh>(generator,Ker,dof,dof,alpha,qforder);
658662
else {
659663
bemtool::Dof<P1X> dofX(meshX,true);
660-
ff_BIO_Generator<R,P1X,P1,TMesh,SMesh>(generator,Ker,dofX,dof,alpha);
664+
ff_BIO_Generator<R,P1X,P1,TMesh,SMesh>(generator,Ker,dofX,dof,alpha,qforder);
661665
}
662666
}
663667
else if (SP2) {
664668
bemtool::Dof<P2> dof(mesh,true);
665669
if (samemesh)
666-
ff_BIO_Generator<R,P2,P2,SMesh,SMesh>(generator,Ker,dof,dof,alpha);
670+
ff_BIO_Generator<R,P2,P2,SMesh,SMesh>(generator,Ker,dof,dof,alpha,qforder);
667671
else {
668672
bemtool::Dof<P2X> dofX(meshX,true);
669-
ff_BIO_Generator<R,P2X,P2,TMesh,SMesh>(generator,Ker,dofX,dof,alpha);
673+
ff_BIO_Generator<R,P2X,P2,TMesh,SMesh>(generator,Ker,dofX,dof,alpha,qforder);
670674
}
671675
}
672676
else if (SRT0 && SRdHat::d == 2) {
673677
// BemKernel->typeKernel[0] == 6 :: MA_SL
674678
bemtool::Dof<bemtool::RT0_2D> dof(mesh);
675-
ff_BIO_Generator_Maxwell<R>(generator,Ker,dof,alpha);
679+
ff_BIO_Generator_Maxwell<R>(generator,Ker,dof,alpha,qforder);
676680
}
677681
else
678682
ffassert(0);

0 commit comments

Comments
 (0)