Use time tabular velocity gradient BC

20 views
Skip to first unread message

Alexander P

unread,
Nov 25, 2025, 5:25:00 AMNov 25
to Prisms-CPFE-users
Hi, I read your article "PRISMS-Plasticity TM: An Open-Source Rapid Texture Evolution Analysis Pipeline" and wanted to try to use Taylor model for my problems. I looked at the article attachment archive and 3 examples there used tabular velocity gradient BC. But when I tried to apply this BC to my problem I got error "No entry with name <Use time tabular velocity gradient BC> was declared in the current subsection". 
I looked at userInputParameters.cc file and there is indeed no such parameter. So did you used some unpublished version of the code for this article?

Alexander P

unread,
Nov 28, 2025, 2:42:36 AMNov 28
to Prisms-CPFE-users
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. 
I have added this code to updateBeforeIncrement.cc:

   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");
вторник, 25 ноября 2025 г. в 15:25:00 UTC+5, Alexander P:
Reply all
Reply to author
Forward
0 new messages