В MOOSE я хочу передать LineValueSampler из VectorPostProcessor в PostProcessor.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 В MOOSE я хочу передать LineValueSampler из VectorPostProcessor в PostProcessor.

Сообщение Anonymous »

Я хочу создать функцию на основе LineaValueSampler (VectorPostProcessor), но анализируемую на постпроцессоре в MOOSE. В частности, из LineaValueSampler я получаю на выходе [переменную][id][x][y][z] в файле .csv для каждой итерации. Меня интересует передача этих результатов из LineaValueSampler (VectoPostProcessor) в PostProcessor в одном файле .csv. В этом постпроцессоре я хотел бы взять определенное значение [переменной], а затем сравнить его с порогом. Если разница между
[variable]-threshold < tolerance --> I save this value.

Есть ли у вас предложения по решению этой проблемы? Спасибо за ваше терпение. Ниже есть .h и .C, в которых я представляю эту идею. Вы можете мне помочь?
neckvalue.h:
#ifndef NECKVALUE_H
#define NECKVALUE_H

#include "GeneralPostprocessor.h"

class neckvalue : public GeneralPostprocessor
{
public:
neckvalue(const InputParameters & parameters);
static InputParameters validParams();

Real calculateValue();

protected:

std::vector _c_var;
const Real _threshold;
const Real _tolerance;

};

#endif

neckvalue.cpp:
#include "neckvalue.h"

registerMooseObject("ParrotApp", neckvalue);

InputParameters
neckvalue::validParams()
{
InputParameters params = GeneralPostprocessor::validParams();

params.addRequiredParam("threshold", "Seconda variabile");
params.addRequiredParam("tolerance", "Terza variabile");
return params;
}

neckvalue::neckvalue(
const InputParameters &parameters)
: GeneralPostprocessor(parameters),
_threshold(getParam("threshold")),
_tolerance(getParam("tolerance")),
_c_var(getParam("c_var"))
{}

Real neckvalue::calculateValue() {

Real value = 0.0;
const VectorPostprocessorValue &values = (getVectorPostprocessorValue("NeckLineValueSampler","value"));

std::vector c_var = values;
for (unsigned int i = 0; i < 100; i++)
{
if (std::abs(_c_var - _threshold) < _tolerance)
{
value = c_var;
}
}
return value;
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... -a-postpro
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»