예제 #1
0
void
LayeredSideIntegral::execute()
{
  Real integral_value = computeIntegral();

  unsigned int layer = getLayer(_current_elem->centroid());

  setLayerValue(layer, getLayerValue(layer) + integral_value);
}
예제 #2
0
void
BlockAverageValue::execute()
{
  // Compute the integral on this element
  Real integral_value = computeIntegral();

  // Add that value to the others we've computed on this subdomain
  _integral_values[_current_elem->subdomain_id()] += integral_value;

  // Keep track of the volume of this block
  _volume_values[_current_elem->subdomain_id()] += _current_elem_volume;
}
void
FeatureVolumeVectorPostprocessor::accumulateVolumes(
    const Elem * elem,
    const std::vector<unsigned int> & var_to_features,
    std::size_t libmesh_dbg_var(num_features))
{
  unsigned int dominant_feature_id = FeatureFloodCount::invalid_id;
  Real max_var_value = std::numeric_limits<Real>::lowest();

  for (MooseIndex(var_to_features) var_index = 0; var_index < var_to_features.size(); ++var_index)
  {
    // Only sample "active" variables
    if (var_to_features[var_index] != FeatureFloodCount::invalid_id)
    {
      auto feature_id = var_to_features[var_index];
      mooseAssert(feature_id < num_features, "Feature ID out of range");
      auto integral_value = computeIntegral(var_index);

      // Compute volumes in a simplistic but domain conservative fashion
      if (_single_feature_per_elem)
      {
        if (integral_value > max_var_value)
        {
          // Update the current dominant feature and associated value
          max_var_value = integral_value;
          dominant_feature_id = feature_id;
        }
      }
      // Solution based volume calculation (integral value)
      else
        _feature_volumes[feature_id] += integral_value;
    }
  }

  // Accumulate the entire element volume into the dominant feature. Do not use the integral value
  if (_single_feature_per_elem && dominant_feature_id != FeatureFloodCount::invalid_id)
    _feature_volumes[dominant_feature_id] += elem->volume();
}
예제 #4
0
void
HomogenizedThermalConductivity::execute()
{
  _integral_value += computeIntegral();
  _volume += _current_elem_volume;
}
예제 #5
0
void
ElementIntegralUserObject::execute()
{
  _integral_value += computeIntegral();
}
예제 #6
0
void
SideIntegralUserObject::execute()
{
  _integral_value += computeIntegral();
}
예제 #7
0
void
ElementIntegralPostprocessor::execute()
{
  _integral_value += computeIntegral();
}