Class ImplicitLinearisedSolver<T extends ClassicalProblem>
- 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.ImplicitScheme
-
- pulse.problem.schemes.solvers.ImplicitLinearisedSolver<T>
-
- Type Parameters:
T- a subclass of ClassicalProblem
- All Implemented Interfaces:
Serializable,Solver<T>,Descriptive,Reflexive
public class ImplicitLinearisedSolver<T extends ClassicalProblem> extends ImplicitScheme implements Solver<T>
Performs a fully-dimensionless calculation for theLinearisedProblem.Initiates constants for calculations and uses a sweep method to evaluate the solution for each subsequent timestep, filling 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 fully implicit scheme uses a standard 4-point template on a one-dimensional grid that utilises the following grid-function values on each step: . Because no explicit formula can be used for calculating the grid-function at timestep , a sweep method is implemented instead. The boundary conditions are approximated with a Taylor expansion up to the third term, hence the scheme has an increased order of approximation.
The fully implicit scheme is unconditionally stable and has an order of approximation of at least for both the heat equation and the boundary conditions.
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description ImplicitLinearisedSolver()ImplicitLinearisedSolver(NumericProperty N, NumericProperty timeFactor)ImplicitLinearisedSolver(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.doubleevalRightBoundary(double alphaN, double betaN)doublefirstBeta()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.-
Methods inherited from class pulse.problem.schemes.ImplicitScheme
getTridiagonalMatrixAlgorithm, leftBoundary, setTridiagonalMatrixAlgorithm, timeStep, 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
-
ImplicitLinearisedSolver
public ImplicitLinearisedSolver()
-
ImplicitLinearisedSolver
public ImplicitLinearisedSolver(NumericProperty N, NumericProperty timeFactor)
-
ImplicitLinearisedSolver
public ImplicitLinearisedSolver(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 classImplicitScheme- 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<T extends ClassicalProblem>- Parameters:
problem- - an accepted instance ofT- Throws:
SolverException
-
firstBeta
public double firstBeta()
- Specified by:
firstBetain classImplicitScheme
-
evalRightBoundary
public double evalRightBoundary(double alphaN, double betaN)- Specified by:
evalRightBoundaryin classImplicitScheme
-
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.
-
-