Member2Aniso.h
Go to the documentation of this file.00001 #ifndef MEMBER2ANISO_H_
00002 #define MEMBER2ANISO_H_
00003
00004 #include "C1DAnisoMTSynthData.h"
00005 #include "Adaptors.h"
00006 #include <algorithm>
00007 namespace gplib
00008 {
00009
00010 void inline Member2Aniso(const ttranscribed &member,
00011 C1DAnisoMTSynthData &Synth)
00012 {
00013 const int nlayers = member.size() / 4;
00014
00015 trealdata rho1(nlayers, 0);
00016 trealdata rho2(nlayers, 0);
00017 trealdata zeros(nlayers, 0);
00018 trealdata strike(nlayers, 0);
00019 trealdata thick(nlayers, 0);
00020
00021 transform(member.begin(), member.begin() + nlayers, rho1.begin(),
00022 boost::bind(gplib::fopow<double, double>(), 10., _1));
00023
00024 copy(member.begin() + nlayers, member.begin() + 2 * nlayers,
00025 thick.begin());
00026
00027 transform(member.begin() + 2 * nlayers, member.begin() + 3 * nlayers,
00028 rho2.begin(), boost::bind(gplib::fopow<double, double>(), 10., _1));
00029
00030 transform(rho2.begin(), rho2.end(), rho1.begin(), rho2.begin(),
00031 std::multiplies<double>());
00032
00033 copy(member.begin() + 3 * nlayers, member.end(), strike.begin());
00034 Synth.SetThicknesses(thick);
00035 Synth.SetRho1(rho1);
00036 Synth.SetRho2(rho2);
00037 Synth.SetRho3(rho1);
00038 Synth.SetStrikes(strike);
00039 Synth.SetSlants(zeros);
00040 Synth.SetDips(zeros);
00041 }
00042 }
00043 #endif