@@ -207,7 +207,7 @@ class HMatrixImpl : public HMatrixVirt<K> {
207207struct 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