After couple of hours of tinkering I implemented the code to use time tabular velocity gradient BC myself. If someone might need to have this functionality this is what I did (so you may not waste time reimplementing it yourself). Recompile after making changes.
if (this->userInputs.enableTimeTabularVelocityGradientBC) {
this->currentTime = this->delT * (this->currentIncrement + 1);
if (this->currentIncrement == 0) {
this->timeCounter = 1;
}
if (this->currentTime > this->userInputs.tabularTimeInputVelGrad[this->timeCounter]) {
this->targetVelGrad.reinit(3, 3); this->targetVelGrad = 0.0;
this->timeCounter = this->timeCounter + 1;
unsigned int tempCounter = 0;
for (unsigned int i = 0;i < 3;i++) {
for (unsigned int j = 0;j < 3;j++) {
this->targetVelGrad[i][j] = this->userInputs.tabulartargetVelGrad[tempCounter][this->timeCounter - 1];
tempCounter++;
}
}
}
}
this to init.cc (in elipticBVP folder):
if (userInputs.enableTimeTabularVelocityGradientBC) {
targetVelGrad.reinit(3, 3); targetVelGrad = 0.0;
unsigned int tempCounter = 0;
for (unsigned int i = 0;i < 3;i++) {
for (unsigned int j = 0;j < 3;j++) {
targetVelGrad[i][j] = userInputs.tabulartargetVelGrad[tempCounter][0];
tempCounter++;
}
}
}
this to userInputParameters.h:
bool enableTimeTabularVelocityGradientBC;
std::vector<double> tabularTimeInputVelGrad;
std::vector<std::vector<double>> tabulartargetVelGrad;
and this to userInputParameters.cc
enableTimeTabularVelocityGradientBC = parameter_handler.get_bool("Use time tabular velocity gradient BC");
tabularTimeInputVelGrad = dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Tabular time for velocity gradient")));
tabulartargetVelGrad.push_back(dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Velocity gradient component 00"))));
tabulartargetVelGrad.push_back(dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Velocity gradient component 01"))));
tabulartargetVelGrad.push_back(dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Velocity gradient component 02"))));
tabulartargetVelGrad.push_back(dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Velocity gradient component 10"))));
tabulartargetVelGrad.push_back(dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Velocity gradient component 11"))));
tabulartargetVelGrad.push_back(dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Velocity gradient component 12"))));
tabulartargetVelGrad.push_back(dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Velocity gradient component 20"))));
tabulartargetVelGrad.push_back(dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Velocity gradient component 21"))));
tabulartargetVelGrad.push_back(dealii::Utilities::string_to_double(dealii::Utilities::split_string_list(parameter_handler.get("Velocity gradient component 22"))));
in function userInputParameters::declare_parameters:
parameter_handler.declare_entry("Use time tabular velocity gradient BC", "false", dealii::Patterns::Bool(), "Flag to indicate whether to use tabular velocity gradient tensor to apply BCs");
parameter_handler.declare_entry("Tabular time for velocity gradient", "", dealii::Patterns::List(dealii::Patterns::Double()), "Tabular time intervals for velocity gradient");
parameter_handler.declare_entry("Velocity gradient component 00", "", dealii::Patterns::List(dealii::Patterns::Double()), "Velocity gradient component 00");
parameter_handler.declare_entry("Velocity gradient component 01", "", dealii::Patterns::List(dealii::Patterns::Double()), "Velocity gradient component 01");
parameter_handler.declare_entry("Velocity gradient component 02", "", dealii::Patterns::List(dealii::Patterns::Double()), "Velocity gradient component 02");
parameter_handler.declare_entry("Velocity gradient component 10", "", dealii::Patterns::List(dealii::Patterns::Double()), "Velocity gradient component 10");
parameter_handler.declare_entry("Velocity gradient component 11", "", dealii::Patterns::List(dealii::Patterns::Double()), "Velocity gradient component 11");
parameter_handler.declare_entry("Velocity gradient component 12", "", dealii::Patterns::List(dealii::Patterns::Double()), "Velocity gradient component 12");
parameter_handler.declare_entry("Velocity gradient component 20", "", dealii::Patterns::List(dealii::Patterns::Double()), "Velocity gradient component 20");
parameter_handler.declare_entry("Velocity gradient component 21", "", dealii::Patterns::List(dealii::Patterns::Double()), "Velocity gradient component 21");
parameter_handler.declare_entry("Velocity gradient component 22", "", dealii::Patterns::List(dealii::Patterns::Double()), "Velocity gradient component 22");