Skip to content
Snippets Groups Projects
Commit 3a3c77cf authored by Xavier Adriaens's avatar Xavier Adriaens
Browse files

Merge branch 'SimultaneousFrequency' into BonesImaging

parents dd3df00b 37644a34
No related branches found
No related tags found
No related merge requests found
...@@ -6,7 +6,8 @@ configuration = line_acquisition ...@@ -6,7 +6,8 @@ configuration = line_acquisition
parametrization = natural parametrization = natural
model_reference_frequency = 1. model_reference_frequency = 1.
# #
receiver_on_emitter = 1 reflection = 1
transmission = 0
xer = 0.5 xer = 0.5
L = 6. L = 6.
# #
......
...@@ -19,6 +19,6 @@ Re(mi2c0) = 1.3 ...@@ -19,6 +19,6 @@ Re(mi2c0) = 1.3
Im(mi2c0) = 0. Im(mi2c0) = 0.
# #
#Output #Output
write_model_fields = 0 write_model_fields = 1
write_wave_fields = 0 write_wave_fields = 0
write_data_fields = 0 write_data_fields = 0
...@@ -104,6 +104,7 @@ int inversion(const GmshFem& gmshFem) ...@@ -104,6 +104,7 @@ int inversion(const GmshFem& gmshFem)
} }
else else
{ {
freq_idx.resize(n_freq);
for (unsigned int f = 0; f < n_freq; f++) for (unsigned int f = 0; f < n_freq; f++)
{ {
std::string suffix_f = std::to_string(f); std::string suffix_f = std::to_string(f);
......
...@@ -86,9 +86,12 @@ namespace line_acquisition ...@@ -86,9 +86,12 @@ namespace line_acquisition
} }
} }
unsigned int r_on_e = 0; unsigned int reflec = 1;
gmshFem.userDefinedParameter(r_on_e, "receiver_on_emitter"); unsigned int trans = 1;
_receiver_on_emitter = ((bool) r_on_e); gmshFem.userDefinedParameter(reflec, "reflection");
gmshFem.userDefinedParameter(trans, "transmission");
_reflection = ((bool) reflec);
_transmission = ((bool) trans);
mesh(); mesh();
...@@ -135,16 +138,25 @@ namespace line_acquisition ...@@ -135,16 +138,25 @@ namespace line_acquisition
_ns = 2; _ns = 2;
_emitter.push_back({0}); _emitter.push_back({0});
_emitter.push_back({1}); _emitter.push_back({1});
if(_receiver_on_emitter) if(_reflection && _transmission)
{ {
_receiver.push_back({0,1}); _receiver.push_back({0,1});
_receiver.push_back({0,1}); _receiver.push_back({1,0});
} }
else else if(_reflection)
{
_receiver.push_back({0});
_receiver.push_back({1});
}
else if (_transmission)
{ {
_receiver.push_back({1}); _receiver.push_back({1});
_receiver.push_back({0}); _receiver.push_back({0});
} }
else
{
throw common::Exception("Acquisistion must at least be transmission or reflection");
}
/* /*
* Reference model function * Reference model function
...@@ -302,14 +314,22 @@ namespace line_acquisition ...@@ -302,14 +314,22 @@ namespace line_acquisition
template<Physic T_Physic> template<Physic T_Physic>
ModelMonoFunction green0_preconditioner(const Data<T_Physic>& dd, const WaveMultiField<T_Physic>& g, const Configuration* const config) ModelMonoFunction green0_preconditioner(const Data<T_Physic>& dd, const WaveMultiField<T_Physic>& g, const Configuration* const config)
{ {
if (config->receiver_on_emitter()) if (config->transmission() && config->reflection())
{ {
return pow(autocorrelate<T_Physic>(g,{0,1}),2); return pow(autocorrelate<T_Physic>(g,{0,1}),2);
} }
else else if(config->reflection())
{
return pow(autocorrelate<T_Physic>(g,{0}),2) + pow(autocorrelate<T_Physic>(g,{1}),2);
}
else if(config->transmission())
{ {
return 2. * autocorrelate<T_Physic>(g,{0}) * autocorrelate<T_Physic>(g,{1}); return 2. * autocorrelate<T_Physic>(g,{0}) * autocorrelate<T_Physic>(g,{1});
} }
else
{
throw common::Exception("Acquisistion must at least be transmission or reflection");
}
} }
template ModelMonoFunction green0_preconditioner<Physic::acoustic>(const Data<Physic::acoustic>&, const WaveMultiField<Physic::acoustic>&, const Configuration* const); template ModelMonoFunction green0_preconditioner<Physic::acoustic>(const Data<Physic::acoustic>&, const WaveMultiField<Physic::acoustic>&, const Configuration* const);
......
...@@ -28,7 +28,8 @@ namespace line_acquisition ...@@ -28,7 +28,8 @@ namespace line_acquisition
{ {
private: private:
double _xer; double _xer;
bool _receiver_on_emitter; bool _reflection;
bool _transmission;
double _L; double _L;
...@@ -51,7 +52,8 @@ namespace line_acquisition ...@@ -51,7 +52,8 @@ namespace line_acquisition
public: public:
Configuration(std::string name, const ParametrizationInterface* const parametrization, const gmshfem::common::GmshFem& gmshFem); Configuration(std::string name, const ParametrizationInterface* const parametrization, const gmshfem::common::GmshFem& gmshFem);
bool receiver_on_emitter() const {return _receiver_on_emitter;}; bool reflection() const {return _reflection;};
bool transmission() const {return _transmission;};
virtual void mesh() const; virtual void mesh() const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment