Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #pragma once 11 : 12 : #include "FEProblemBase.h" 13 : 14 : class ExternalProblem : public FEProblemBase 15 : { 16 : public: 17 : static InputParameters validParams(); 18 : 19 : ExternalProblem(const InputParameters & parameters); 20 : 21 : enum class Direction : unsigned char 22 : { 23 : TO_EXTERNAL_APP, 24 : FROM_EXTERNAL_APP 25 : }; 26 : 27 : /** 28 : * Solve is implemented to providing syncing to/from the "transfer" mesh. 29 : */ 30 : virtual void solve(unsigned int nl_sys_num = 0) override final; 31 : 32 : /** 33 : * New interface for solving an External problem. "solve()" is finalized here to provide 34 : * callbacks for solution syncing. 35 : */ 36 : virtual void externalSolve() = 0; 37 : 38 : /** 39 : * Method to transfer data to/from the external application to the associated transfer mesh. 40 : */ 41 : virtual void syncSolutions(Direction direction) = 0; 42 : 43 : /** 44 : * Method called to add AuxVariables to the simulation. These variables would be the fields 45 : * that should either be saved out with the MOOSE-formatted solutions or available for 46 : * transfer to variables in Multiapp simulations. 47 : */ 48 154 : virtual void addExternalVariables() {} 49 : };