示例#1
0
RockGassmann::RockGassmann(const Fluid                * fluid,
                           const DryRock              * dryrock)
: Rock()
{
  // Deep copy of dryrock and fluid:
  fluid_   = fluid->Clone();
  dryrock_ = dryrock->Clone();

  ComputeSeismicAndElasticParams();

}
示例#2
0
文件: rockdem.cpp 项目: CRAVA/crava
void
RockDEM::SetPorosity(double porosity) {
  // the following assumes inclusions are fluids
  double poro_old = 1.0 - inclusion_concentration_[0];
  double new_volume_fraction_fluid = porosity;
  double new_volume_fraction_solid = 1.0 - new_volume_fraction_fluid;

  inclusion_concentration_[0] = new_volume_fraction_solid;

  for (size_t i = 1; i < inclusion_concentration_.size(); ++i)
    inclusion_concentration_[i] = (porosity * inclusion_concentration_[i]) / poro_old;

  ComputeSeismicAndElasticParams();
}
示例#3
0
文件: rockdem.cpp 项目: CRAVA/crava
RockDEM::RockDEM(const Solid                         * solid,
                 const std::vector<Fluid*>           & fluid,
                 const std::vector<double>           & inclusion_spectrum,
                 const std::vector<double>           & inclusion_concentration,
                 const std::vector<double>           & u)
: Rock()
{
  u_ = u; // u contains independent samples used in quantiles of (inclusion_spectrum,inclusion_concentration), u.back() is for porosity.

  // Deep copy of solid and fluid:
  solid_ = solid->Clone();
  Clone(fluid);

  inclusion_spectrum_      = inclusion_spectrum;
  inclusion_concentration_ = inclusion_concentration;

  ComputeSeismicAndElasticParams();

}
示例#4
0
void
RockGassmann::SetPorosity(double porosity) {
  dryrock_->SetTotalPorosity(porosity);
  ComputeSeismicAndElasticParams();
}