PLaSK library

Loading...
Searching...
No Matches
your_solver.hpp
Go to the documentation of this file.
1/*
2 * This file is part of PLaSK (https://plask.app) by Photonics Group at TUL
3 * Copyright (c) 2022 Lodz University of Technology
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 3.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 */
18#ifndef PLASK__SOLVER_YOUR_SOLVER_H
19#define PLASK__SOLVER_YOUR_SOLVER_H
20
21#include <plask/plask.hpp>
22
23 namespace plask { namespace ccategory { namespace your_solver {
24
29 struct YourSolver: public SolverWithMesh<ForExample_Geometry2DCartesian, ForExample_RectilinearMesh2D> {
30
32 ReceiverFor<Temperature, Geometry2DCartesian> inTemperature;
33
35 ProviderFor<SomeSingleValueProperty>::WithValue outSingleValue;
36
38 ProviderFor<SomeFieldProperty, Geometry2DCartesian>::Delegate outSomeField;
39
40 YourSolver(const std::string& name="");
41
42 virtual std::string getClassName() const { return "NameOfYourSolver"; }
43
44 virtual std::string getClassDescription() const {
45 return "This solver does this and that. And this description can be e.g. shown as a hint in GUI.";
46 }
47
48 virtual void loadConfiguration(plask::XMLReader& reader, plask::Manager& manager);
49
55 void compute(double parameter);
56
57 protected:
58
60 DataVector<double> my_data;
61
63 virtual void onInitialize();
64
66 virtual void onInvalidate();
67
69 const DataVector<const double> getDelegated(const MeshD<2>& dst_mesh, InterpolationMethod method=INTERPOLATION_DEFAULT);
70
71};
72
73
74}}} // namespace
75
76#endif
77