diff --git a/specific/configuration/surface_acquisition.cpp b/specific/configuration/surface_acquisition.cpp index 493d6ddec275f42b755b69c2915ec6cfa3595f39..40cb28b756b98243e47e2fc88069a8fa7eb54661 100644 --- a/specific/configuration/surface_acquisition.cpp +++ b/specific/configuration/surface_acquisition.cpp @@ -207,7 +207,7 @@ namespace surface_acquisition } gmsh::merge(path+suffix+".pos"); - ScalarFunction<std::complex<double>> mpos = probeScalarView<std::complex<double>>(0); + ScalarFunction<std::complex<double>> mpos = probeScalarView<std::complex<double>>(c); m0.addFunction(mpos,_subsurface[Support::BLK] | _subsurface[Support::BND] ); } diff --git a/specific/model/regularization/flooding.cpp b/specific/model/regularization/flooding.cpp index 3bc81f902112080694623c193c23fe52adf39cf0..f72b86863f6b2f2eb6d235473f4ce4775af449a7 100644 --- a/specific/model/regularization/flooding.cpp +++ b/specific/model/regularization/flooding.cpp @@ -24,6 +24,11 @@ namespace flooding { throw Exception("Regularization order could not be found."); } + if(_p<0.5) + { + throw Exception("Flooding regularization parameter p could not be smaller than 0.5."); + } + }; double Regularization::performance(const ModelField& m) @@ -33,7 +38,7 @@ namespace flooding { ScalarFunction<std::complex<double>> mz = yComp(grad(m[c])); ScalarFunction<std::complex<double>> f = (abs(mz) - mz) / 2.; - out += _lambda[c] * integrate( pow(f,2*_p) / 2. / _p, _config->model_unknown(Support::BLK), integrationType(_integrationDegreeBlk) ); + out += _lambda[c] * integrate( pow(f,2.*_p) / 2. / _p, _config->model_unknown(Support::BLK), integrationType(_integrationDegreeBlk) ); } return std::real(out); } @@ -46,7 +51,15 @@ namespace flooding ScalarFunction<std::complex<double>> f = (abs(mz) - mz) / 2.; ScalarFunction<std::complex<double>> partition = heaviside< std::complex< double > >( -mz ); - VectorFunction< std::complex< double > > integrand = vector< std::complex< double > >(0.,-partition * pow(f,2*_p-1),0.); + VectorFunction< std::complex< double > > integrand; + if(_p==0.5) + { + integrand = vector< std::complex< double > >(0.,-partition,0.); + } + else + { + integrand = vector< std::complex< double > >(0.,-partition * pow(f,2.*_p-1.),0.); + } switch (support) { diff --git a/specific/optimization/globalminimumsearch/sequential.cpp b/specific/optimization/globalminimumsearch/sequential.cpp index 8dfc864304e1518af2d1fe06baa2ab07f2962b32..d93ba5d6193ef3b3b08359893230f9c9c9977f2d 100644 --- a/specific/optimization/globalminimumsearch/sequential.cpp +++ b/specific/optimization/globalminimumsearch/sequential.cpp @@ -162,8 +162,11 @@ namespace sequential for (sq = 0; sq < _n_seq; sq++) { std::string suffix1 = std::to_string(sq); - msg::print << "--- Sequence #" << suffix1 << ": " << _seq_parameters[sq] << " --- " << msg::endl; - msg::indent(); + if (_type != "none") + { + msg::print << "--- Sequence #" << suffix1 << ": " << _seq_parameters[sq] << " --- " << msg::endl; + msg::indent(); + } if (_type == "none"){} else if(_type=="innerproduct_strength") @@ -185,7 +188,7 @@ namespace sequential rel_djs = 2. * (js_1-js) / (js_1+js); msg::print << "relative decrease = " << rel_djs << msg::endl; historyline.emplace_back(js,rel_djs,_seq_parameters[sq],statefunctional->performance_objective(),statefunctional->performance_regularization()); - msg::unindent(); + if (_type != "none"){msg::unindent();} } success=true; _history->emplace_back(success,sq,historyline);