Skip to content
Snippets Groups Projects
Commit 2ce4422c authored by Boris Martin's avatar Boris Martin
Browse files

update from upstream

parent 151a365e
No related branches found
No related tags found
1 merge request!6Draft: "Flexible acquisition", a configuration with arbitrary sources and receivers read from a YAML file.
...@@ -233,29 +233,29 @@ file( GLOB LIB_HEADERS contrib/blossom5v2.05/*.h contrib/blossom5v2.05/*/*.h com ...@@ -233,29 +233,29 @@ file( GLOB LIB_HEADERS contrib/blossom5v2.05/*.h contrib/blossom5v2.05/*/*.h com
add_library( fwi ${LIB_SOURCES} ${LIB_HEADERS}) add_library( fwi ${LIB_SOURCES} ${LIB_HEADERS})
target_link_libraries(fwi yaml-cpp) target_link_libraries(fwi yaml-cpp)
add_executable( synthetics synthetics.cpp ${EXTRA_INCS}) add_executable( synthetics synthetics.cpp )
target_link_libraries( synthetics fwi ${EXTRA_LIBS}) target_link_libraries( synthetics fwi ${EXTRA_LIBS})
#add_executable( time_synthetics_wave time_synthetics_wave.cpp ${EXTRA_INCS}) #add_executable( time_synthetics_wave time_synthetics_wave.cpp ${EXTRA_INCS})
#target_link_libraries( time_synthetics_wave fwi ${EXTRA_LIBS}) #target_link_libraries( time_synthetics_wave fwi ${EXTRA_LIBS})
add_executable( directional directional.cpp ${EXTRA_INCS}) add_executable( directional directional.cpp )
target_link_libraries( directional fwi ${EXTRA_LIBS}) target_link_libraries( directional fwi ${EXTRA_LIBS})
add_executable( directional_field directional_field.cpp ${EXTRA_INCS}) add_executable( directional_field directional_field.cpp )
target_link_libraries( directional_field fwi ${EXTRA_LIBS}) target_link_libraries( directional_field fwi ${EXTRA_LIBS})
add_executable( gradient gradient.cpp ${EXTRA_INCS}) add_executable( gradient gradient.cpp )
target_link_libraries( gradient fwi ${EXTRA_LIBS}) target_link_libraries( gradient fwi ${EXTRA_LIBS})
#add_executable( convergence convergence.cpp ${EXTRA_INCS}) #add_executable( convergence convergence.cpp ${EXTRA_INCS})
#target_link_libraries( convergence fwi ${EXTRA_LIBS}) #target_link_libraries( convergence fwi ${EXTRA_LIBS})
#add_executable( preconditioner preconditioner.cpp ${EXTRA_INCS}) #add_executable( preconditioner preconditioner.cpp ${EXTRA_INCS})
#target_link_libraries( preconditioner fwi ${EXTRA_LIBS}) #target_link_libraries( preconditioner fwi ${EXTRA_LIBS})
add_executable( ip_comparison ip_comparison.cpp ${EXTRA_INCS}) add_executable( ip_comparison ip_comparison.cpp )
target_link_libraries( ip_comparison fwi ${EXTRA_LIBS}) target_link_libraries( ip_comparison fwi ${EXTRA_LIBS})
#add_executable( ob_comparison ob_comparison.cpp ${EXTRA_INCS}) #add_executable( ob_comparison ob_comparison.cpp ${EXTRA_INCS})
#target_link_libraries( ob_comparison fwi ${EXTRA_LIBS}) #target_link_libraries( ob_comparison fwi ${EXTRA_LIBS})
add_executable( multiscale multiscale.cpp ${EXTRA_INCS}) add_executable( multiscale multiscale.cpp )
target_link_libraries( multiscale fwi ${EXTRA_LIBS}) target_link_libraries( multiscale fwi ${EXTRA_LIBS})
add_executable( inversion inversion.cpp ${EXTRA_INCS}) add_executable( inversion inversion.cpp )
target_link_libraries( inversion fwi ${EXTRA_LIBS}) target_link_libraries( inversion fwi ${EXTRA_LIBS})
add_executable( error error.cpp ${EXTRA_INCS}) add_executable( error error.cpp)
target_link_libraries( error fwi ${EXTRA_LIBS}) target_link_libraries( error fwi ${EXTRA_LIBS})
......
...@@ -51,6 +51,12 @@ public: ...@@ -51,6 +51,12 @@ public:
gmshFem.userDefinedParameter(remesh, "remesh"); gmshFem.userDefinedParameter(remesh, "remesh");
_remesh = ((bool) remesh); _remesh = ((bool) remesh);
}; };
ConfigurationInterface() : _name("dummy"), _parametrization(nullptr), _mc(1,0.)
{
_remesh = true;
};
virtual ~ConfigurationInterface() {delete _parametrization;}; virtual ~ConfigurationInterface() {delete _parametrization;};
virtual void mesh() const; virtual void mesh() const;
......
...@@ -130,6 +130,7 @@ namespace flexible_acquisition ...@@ -130,6 +130,7 @@ namespace flexible_acquisition
// Once Dirichlet BCs are added // Once Dirichlet BCs are added
//_named_domains() ... //_named_domains() ...
_named_domains["top_bnd"] = Domain("top_bnd");
/* /*
* Reference model function * Reference model function
...@@ -192,6 +193,9 @@ namespace flexible_acquisition ...@@ -192,6 +193,9 @@ namespace flexible_acquisition
gmodel::addPhysicalGroup(1, {lineLeftSuper, lineTop, lineRightSuper}, 12); gmodel::addPhysicalGroup(1, {lineLeftSuper, lineTop, lineRightSuper}, 12);
gmodel::setPhysicalName(1, 12, "supersurface_bnd"); gmodel::setPhysicalName(1, 12, "supersurface_bnd");
gmodel::addPhysicalGroup(1, {lineTop}, 13);
gmodel::setPhysicalName(1, 13, "top_bnd");
for (unsigned p = 0; p < p_er.size(); ++p) { for (unsigned p = 0; p < p_er.size(); ++p) {
gmodel::addPhysicalGroup(0, {p_er[p]}, 1000+p); gmodel::addPhysicalGroup(0, {p_er[p]}, 1000+p);
gmodel::setPhysicalName(0, 1000+p, "emitter_receiver_"+std::to_string(p)); gmodel::setPhysicalName(0, 1000+p, "emitter_receiver_"+std::to_string(p));
......
...@@ -81,6 +81,12 @@ namespace simplewave ...@@ -81,6 +81,12 @@ namespace simplewave
else { else {
msg::warning << "SimpleWave without specified top_bc defaults to Absorbing." << msg::endl; msg::warning << "SimpleWave without specified top_bc defaults to Absorbing." << msg::endl;
} }
_useSecondOrderABC = false;
int intArg;
gmshFem.userDefinedParameter(intArg, "useSecondOrderABC");
_useSecondOrderABC = intArg != 0;
msg::warning << "Using Second Order ABC : " << _useSecondOrderABC << msg::endl;
} }
bool Equation::modelIsObsolete() bool Equation::modelIsObsolete()
...@@ -114,6 +120,8 @@ namespace simplewave ...@@ -114,6 +120,8 @@ namespace simplewave
void Equation::setLHS(const ModelStateEvaluator& ms) void Equation::setLHS(const ModelStateEvaluator& ms)
{ {
auto top = _config->named_domains().find("top_bnd"); auto top = _config->named_domains().find("top_bnd");
if (_topBC == "Dirichlet" || _topBC == "Neumann") if (_topBC == "Dirichlet" || _topBC == "Neumann")
{ {
if (top == _config->named_domains().end()) if (top == _config->named_domains().end())
...@@ -138,10 +146,13 @@ namespace simplewave ...@@ -138,10 +146,13 @@ namespace simplewave
if(_realImpedance) if(_realImpedance)
{ {
_formulation.integral(-1. * im * _pulsation * sqrt(real(m0)) * dof(_v), tf(_v), absorbingPartKnown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions _formulation.integral(-1. * im * _pulsation * sqrt(real(m0)) * dof(_v), tf(_v), absorbingPartKnown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions
if (_useSecondOrderABC) _formulation.integral(1. * im / (2.0 * _pulsation * sqrt(real(m0))) * grad(dof(_v)), grad(tf(_v)), absorbingPartKnown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions
} }
else else
{ {
_formulation.integral(-1. * im * _pulsation * sqrt(m0) * dof(_v), tf(_v), absorbingPartKnown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions _formulation.integral(-1. * im * _pulsation * sqrt(m0) * dof(_v), tf(_v), absorbingPartKnown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions
if (_useSecondOrderABC) _formulation.integral(1. * im / (2.0 * _pulsation * sqrt(m0)) * grad(dof(_v)), grad(tf(_v)), absorbingPartKnown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions
} }
if(!_config->model_unknown(Support::BLK).isEmpty()) if(!_config->model_unknown(Support::BLK).isEmpty())
{ {
...@@ -152,10 +163,12 @@ namespace simplewave ...@@ -152,10 +163,12 @@ namespace simplewave
if(_realImpedance) if(_realImpedance)
{ {
_formulation.integral(-1. * im * _pulsation * sqrt(real(m)) * dof(_v), tf(_v), absorbingPartUnknown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions _formulation.integral(-1. * im * _pulsation * sqrt(real(m)) * dof(_v), tf(_v), absorbingPartUnknown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions
if (_useSecondOrderABC) _formulation.integral(1. * im / (2. * _pulsation * sqrt(real(m))) * grad(dof(_v)), grad(tf(_v)), absorbingPartUnknown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions
} }
else else
{ {
_formulation.integral(-1. * im * _pulsation * sqrt(m) * dof(_v), tf(_v), absorbingPartUnknown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions _formulation.integral(-1. * im * _pulsation * sqrt(m) * dof(_v), tf(_v), absorbingPartUnknown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions
if (_useSecondOrderABC) _formulation.integral(1. * im / (2. * _pulsation * sqrt(m)) * grad(dof(_v)), grad(tf(_v)), absorbingPartUnknown, integrationType(_integrationDegreeBnd)); //-1 from sign conventions
} }
} }
} }
......
...@@ -7,6 +7,10 @@ ...@@ -7,6 +7,10 @@
#include <gmshfem/Formulation.h> #include <gmshfem/Formulation.h>
#include <gmshfem/GmshFem.h> #include <gmshfem/GmshFem.h>
#include "../common/wave/element.h" #include "../common/wave/element.h"
#include "../common/data/element.h"
#include "../specific/data/element.h"
#include "dummyAcquisition.h"
#define INIT_GMSHFEM() \ #define INIT_GMSHFEM() \
namespace geo = gmsh::model::geo; \ namespace geo = gmsh::model::geo; \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment