1 #ifndef _VLACHOS_ET_AL_H_ 2 #define _VLACHOS_ET_AL_H_ 8 #include "distribution.h" 9 #include "json_object.h" 10 #include "numeric_utils.h" 11 #include "stochastic_model.h" 45 VlachosEtAl(
double moment_magnitude,
double rupture_distance,
double vs30,
46 double orientation,
unsigned int num_spectra,
47 unsigned int num_sims);
67 VlachosEtAl(
double moment_magnitude,
double rupture_distance,
double vs30,
68 double orientation,
unsigned int num_spectra,
69 unsigned int num_sims,
int seed_value);
97 bool g_units =
false)
override;
110 bool generate(
const std::string& event_name,
111 const std::string& output_location,
112 bool g_units =
false)
override;
123 const Eigen::VectorXd& parameters)
const;
134 const Eigen::MatrixXd& power_spectrum)
const;
146 const std::vector<double>& filter_imp_resp)
const;
166 const std::vector<double>& parameters,
167 const std::vector<double>& energy)
const;
180 const std::vector<double>& parameters,
181 const std::vector<double>& times)
const;
194 const std::vector<double>& parameters,
195 const std::vector<double>& energy)
const;
209 double duration,
double total_energy,
210 const std::vector<double>& parameters,
211 const std::vector<double>& times)
const;
232 Eigen::VectorXd
kt_2(
const std::vector<double>& parameters,
233 const std::vector<double>& frequencies,
234 const std::vector<double>& highpass_butter)
const;
245 std::vector<double>& x_accels,
246 std::vector<double>& y_accels,
bool g_units)
const;
249 double moment_magnitude_;
250 double rupture_dist_;
257 unsigned int num_spectra_;
259 unsigned int num_sims_;
263 Eigen::VectorXd means_;
264 Eigen::MatrixXd covariance_;
265 std::vector<std::shared_ptr<stochastic::Distribution>>
267 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>
268 parameter_realizations_;
269 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>
270 physical_parameters_;
272 std::shared_ptr<numeric_utils::RandomGenerator>
277 #endif // _VLACHOS_ET_AL_H_ bool post_process(std::vector< double > &time_history, const std::vector< double > &filter_imp_resp) const
std::vector< double > energy_accumulation(const std::vector< double > ¶meters, const std::vector< double > ×) const
Eigen::VectorXd kt_2(const std::vector< double > ¶meters, const std::vector< double > &frequencies, const std::vector< double > &highpass_butter) const
std::vector< double > modal_frequencies(const std::vector< double > ¶meters, const std::vector< double > &energy) const
std::vector< double > amplitude_modulating_function(double duration, double total_energy, const std::vector< double > ¶meters, const std::vector< double > ×) const
bool time_history_family(std::vector< std::vector< double >> &time_histories, const Eigen::VectorXd ¶meters) const
void rotate_acceleration(const std::vector< double > &acceleration, std::vector< double > &x_accels, std::vector< double > &y_accels, bool g_units) const
Eigen::VectorXd identify_parameters(const Eigen::VectorXd &initial_params) const
utilities::JsonObject generate(const std::string &event_name, bool g_units=false) override
void simulate_time_history(std::vector< double > &time_history, const Eigen::MatrixXd &power_spectrum) const
VlachosEtAl & operator=(const VlachosEtAl &)=delete
std::vector< double > modal_participation_factor(const std::vector< double > ¶meters, const std::vector< double > &energy) const