Class ExplicitLinearisedSolver
- java.lang.Object
-
- pulse.util.UpwardsNavigable
-
- pulse.util.Group
-
- pulse.util.Accessible
-
- pulse.util.PropertyHolder
-
- pulse.problem.schemes.DifferenceScheme
-
- pulse.problem.schemes.OneDimensionalScheme
-
- pulse.problem.schemes.ExplicitScheme
-
- pulse.problem.schemes.solvers.ExplicitLinearisedSolver
-
- All Implemented Interfaces:
Serializable,Solver<ClassicalProblem>,Descriptive,Reflexive
public class ExplicitLinearisedSolver extends ExplicitScheme implements Solver<ClassicalProblem>
Performs a fully-dimensionless calculation for theLinearisedProblem.Relies on using the heat equation to calculate the value of the grid-function at the next timestep. Fills the
gridcompletely at each specified spatial point. The heating curve is updated with the rear-side temperature ) (here is the grid density) at the end oftimeLimitintervals, which comprise oftimeLimit/tautime steps. TheHeatingCurveis scaled (re-normalised) by a factor ofmaxTemp/maxVal, wheremaxValis the absolute maximum of the calculated solution (with respect to time), andmaxTempis themaximumTemperatureNumericPropertyofproblem.The explicit scheme uses a standard 4-point template on a one-dimensional grid that utilises the following grid-function values on each step: . Hence, the calculation of the grid-function at the timestep can be done explicitly. The derivative in the boundary conditions is approximated using a simple forward difference.
The explicit scheme is stable only if and has an order of approximation of . Note that this scheme is only used for validating more complex schemes and does not give accurate results due to the lower order of approximation. When calculations using this scheme are performed, the
gridDensityis chosen to be at least 80, which ensures that the error is not too high (typically a1.5E-2relative error).- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description ExplicitLinearisedSolver()ExplicitLinearisedSolver(NumericProperty N, NumericProperty timeFactor)ExplicitLinearisedSolver(NumericProperty N, NumericProperty timeFactor, NumericProperty timeLimit)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DifferenceSchemecopy()Creates aDifferenceScheme, which is an exact copy of this object.Class<? extends Problem>[]domain()Retrieves all problem statements that can be solved with this implementation of the difference scheme.voidprepare(Problem problem)Contains preparatory steps to ensure smooth running of the solver.This includes creating aDiscretePulseobject and adjusting the grid of this scheme to match theDiscretePulsecreated for thisproblemFinally, a heating curve is cleared from the previously calculated values.voidsolve(ClassicalProblem problem)Calculates the solution of thetand stores it in the respectiveHeatingCurve.voidtimeStep(int m)-
Methods inherited from class pulse.problem.schemes.ExplicitScheme
explicitSolution, phi, toString
-
Methods inherited from class pulse.problem.schemes.OneDimensionalScheme
clearArrays, finaliseStep, getCurrentSolution, getPreviousSolution, setSolutionAt, signal
-
Methods inherited from class pulse.problem.schemes.DifferenceScheme
areDetailsHidden, copyFrom, getCurrentPulseValue, getDiscretePulse, getGrid, getTimeInterval, getTimeLimit, initFrom, listedKeywords, normalOperation, prepareStep, pulse, runTimeSequence, runTimeSequence, scaleSolution, set, setDetailsHidden, setGrid, setTimeInterval, setTimeLimit
-
Methods inherited from class pulse.util.PropertyHolder
addListener, data, describe, firePropertyChanged, getDescriptor, getListeners, getPrefix, ignoreSiblings, initListeners, isListedNumericType, isListedParameter, listedTypes, numericData, parameterListChanged, removeListeners, setPrefix, updateProperties, updateProperty
-
Methods inherited from class pulse.util.Accessible
accessibleChildren, genericProperties, genericProperty, numericProperties, numericProperty, property, update, update
-
Methods inherited from class pulse.util.UpwardsNavigable
addHierarchyListener, getHierarchyListeners, getParent, identify, removeHierarchyListener, removeHierarchyListeners, setParent, specificAncestor, tellParent
-
-
-
-
Constructor Detail
-
ExplicitLinearisedSolver
public ExplicitLinearisedSolver()
-
ExplicitLinearisedSolver
public ExplicitLinearisedSolver(NumericProperty N, NumericProperty timeFactor)
-
ExplicitLinearisedSolver
public ExplicitLinearisedSolver(NumericProperty N, NumericProperty timeFactor, NumericProperty timeLimit)
-
-
Method Detail
-
prepare
public void prepare(Problem problem) throws SolverException
Description copied from class:DifferenceSchemeContains preparatory steps to ensure smooth running of the solver.This includes creating a
DiscretePulseobject and adjusting the grid of this scheme to match theDiscretePulsecreated for thisproblemFinally, a heating curve is cleared from the previously calculated values.All subclasses of
DifferenceSchemeshould override and explicitly call this superclass method where appropriate.- Overrides:
preparein classDifferenceScheme- Parameters:
problem- the heat problem to be solved- Throws:
SolverException
-
solve
public void solve(ClassicalProblem problem) throws SolverException
Description copied from interface:SolverCalculates the solution of thetand stores it in the respectiveHeatingCurve.- Specified by:
solvein interfaceSolver<ClassicalProblem>- Parameters:
problem- - an accepted instance ofT- Throws:
SolverException
-
timeStep
public void timeStep(int m)
- Specified by:
timeStepin classDifferenceScheme
-
copy
public DifferenceScheme copy()
Description copied from class:DifferenceSchemeCreates aDifferenceScheme, which is an exact copy of this object.- Specified by:
copyin classDifferenceScheme- Returns:
- an exact copy of this
DifferenceScheme.
-
domain
public Class<? extends Problem>[] domain()
Description copied from class:DifferenceSchemeRetrieves all problem statements that can be solved with this implementation of the difference scheme.- Specified by:
domainin classDifferenceScheme- Returns:
- an array containing subclasses of the
Problemclass which can be used as input for this difference scheme.
-
-