cz.cuni.jagrlib.piece
Class SLERelaxation

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.piece.SLERelaxation
All Implemented Interfaces:
Breakable, Property, SLESolver, Template

public class SLERelaxation
extends Piece
implements SLESolver

SLE solver - various relaxation methods. Gauss-Seidel and Southwell iterations (with optional over-relaxation) are implemented so far.

See Also:
SLERelaxation.java

Nested Class Summary
static class SLERelaxation.Methods
          Supported methods.
 
Field Summary
protected  double[] B
          Actual vector of unknown variables.
protected static java.lang.String CATEGORY
          Object category.
protected  SLEData data
          Accelerator: input SLEData.
protected  double epsilon
          Required solution accuracy (max. norm of residual vector).
static java.lang.String EPSILON
           
protected  int i
          Index of the next unknown to be relaxed (for ordinal methods).
protected  boolean isInitialized
          Was the solver already initialized?
protected  double[] K
          Actual matrix column.
protected  int N
          Number of unknowns.
protected  double omega
          Over-relaxation factor.
protected  double[] r
          Residual vector.
protected  double[] r2
          Second residual vector for Jacobi method (used for new solution generation).
static RegPiece reg
          Static registration instance for this class.
protected  int steps
          Number of performed iteration steps.
protected static java.lang.String TEMPLATE_NAME
          Object template identifier.
static java.lang.String USED_METHOD
           
protected  SLERelaxation.Methods usedMethod
          Actual sub-method.
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.SLESolver
OMEGA, STEPS, TOTAL_RESIDUAL
 
Fields inherited from interface cz.cuni.jagrlib.iface.Property
LOGGING, STATISTICS, TEXT_DESCRIPTION
 
Fields inherited from interface cz.cuni.jagrlib.Template
ALL_PLUGS, C_1D, C_2D, C_3D, C_ALPHA, C_BINARY, C_BREP, C_CAMERA, C_CIRCLE, C_CLIP, C_COMPRESSION, C_CURVE, C_DATA, C_DRAW, C_EDITOR, C_ELLIPSE, C_FILL, C_FILTER, C_FLOAT, C_FUNCTION, C_IMAGE, C_INTEGER, C_IO, C_LIGHT, C_LINE, C_METRIC, C_POLYGON, C_PROJECTION, C_RADIOSITY, C_RASTER, C_RENDER, C_SAMPLE, C_SCENE, C_SET, C_SOLID, C_TEXT, C_TRANSFORM, C_VECTOR, C_VIEWER, C_WORKER, CAT_EMPTY, EMPTY, IFACE, JAGRLIB, JAGRLIB2, MANIPULATOR_COMBO, MANIPULATOR_CUSTOM, MANIPULATOR_DEFAULT, MANIPULATOR_MULTILINE, PL_ALPHAMASK, PL_BITMASK, PL_CAUSTIC, PL_CODEC, PL_COLORMAP, PL_COMPARE, PL_DATA, PL_DIRECT, PL_EDITOR, PL_FILTER, PL_FUNCTION, PL_IMAGE, PL_IMPORT, PL_INPUT, PL_INTERSECTION, PL_LIGHTSOURCE, PL_ORDER, PL_OUTPUT, PL_PALETTE, PL_PHOTON, PL_PROPERTY, PL_QUANTIZER, PL_RASTER, PL_RENDER, PL_SHADOW, PL_STREAM, PL_TRANSFORM, PL_TRIGGER, PL_VOLUME, PL_WINDOW, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_OBJECT, TYPE_STRING
 
Constructor Summary
SLERelaxation()
           
 
Method Summary
 int actualComponent()
          Get actual component number.
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 double[] getSolution(double[] result)
          Reads the whole solution vector.
 double getSolution(int col)
          Reads a single unknown (element of solution vector).
protected  double getTotalResidual()
           
 double refine(int maxIterations, boolean save)
          Refine the solution performing several iterations.
 void reset()
          Reset the solver (if applicable).
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
 void setComponent(int c)
          Set actual component (non-mandatory).
 double setEpsilon(double epsilon)
          Sets solver accuracy (whatever it means).
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 void solve(boolean save)
          Solve the whole system en bloc.
protected  double solve(int maxIterations, boolean save)
          Performs the given number of iteration steps.
 void update()
          Input data was changed, solver should adapt to it.
 
Methods inherited from class cz.cuni.jagrlib.Piece
className, connect, findPlug, findPlug, getInfo, getInterface, getInterface, getPlug, getReg, init, isCompatible, isCompatible, isConnected, logError, logWarning, myInterface, newInputPlug, newOptOutputPlug, newOutputPlug, newPlug, noTemplates, propBegin, propBounds, propDefault, propEnd, propEnum, propManipulator, propManipulator, setProgressListener, setRegStrings, setTemplateDynamic, stop
 
Methods inherited from class cz.cuni.jagrlib.DefaultProperty
booleanProperty, booleanProperty, colorDoubleProperty, colorProperty, commit, doubleProperty, doubleProperty, doubleProperty, enumProperty, floatProperty, floatProperty, floatProperty, intProperty, intProperty, intProperty, longProperty, longProperty, longProperty, set, stringProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface cz.cuni.jagrlib.iface.Property
commit
 

Field Detail

data

protected SLEData data
Accelerator: input SLEData.


usedMethod

protected SLERelaxation.Methods usedMethod
Actual sub-method.


epsilon

protected double epsilon
Required solution accuracy (max. norm of residual vector).


omega

protected double omega
Over-relaxation factor. 1.0 for plain relaxation.


i

protected int i
Index of the next unknown to be relaxed (for ordinal methods).


steps

protected int steps
Number of performed iteration steps.


N

protected int N
Number of unknowns.


B

protected double[] B
Actual vector of unknown variables.


K

protected double[] K
Actual matrix column.


r

protected double[] r
Residual vector.


r2

protected double[] r2
Second residual vector for Jacobi method (used for new solution generation).


isInitialized

protected boolean isInitialized
Was the solver already initialized?


USED_METHOD

public static final java.lang.String USED_METHOD
See Also:
Constant Field Values

EPSILON

public static final java.lang.String EPSILON
See Also:
Constant Field Values

TEMPLATE_NAME

protected static final java.lang.String TEMPLATE_NAME
Object template identifier.

See Also:
Constant Field Values

CATEGORY

protected static final java.lang.String CATEGORY
Object category.

See Also:
Constant Field Values

reg

public static final RegPiece reg
Static registration instance for this class. Automatically initialized in class-loading time.

Constructor Detail

SLERelaxation

public SLERelaxation()
Method Detail

setEpsilon

public double setEpsilon(double epsilon)
Sets solver accuracy (whatever it means).

Specified by:
setEpsilon in interface SLESolver

solve

public void solve(boolean save)
Solve the whole system en bloc.

Specified by:
solve in interface SLESolver
Parameters:
save - Solution will be saved into the associated SLEData.

reset

public void reset()
Reset the solver (if applicable).

Specified by:
reset in interface SLESolver

refine

public double refine(int maxIterations,
                     boolean save)
Refine the solution performing several iterations.

Specified by:
refine in interface SLESolver
Parameters:
maxIterations - Number of iterations requested.
save - Solution will be saved into the associated SLEData.
Returns:
Achieved precision (if less than epsilon, the system has converged).

update

public void update()
Input data was changed, solver should adapt to it. Usually solve(boolean) or refine(int, boolean) will be called afterwards..

Specified by:
update in interface SLESolver

getSolution

public double getSolution(int col)
Reads a single unknown (element of solution vector). Non-mandatory.

Specified by:
getSolution in interface SLESolver

getSolution

public double[] getSolution(double[] result)
Reads the whole solution vector. Non-mandatory.

Specified by:
getSolution in interface SLESolver

actualComponent

public int actualComponent()
Get actual component number.

Specified by:
actualComponent in interface SLESolver

setComponent

public void setComponent(int c)
Set actual component (non-mandatory).

Specified by:
setComponent in interface SLESolver

solve

protected double solve(int maxIterations,
                       boolean save)
Performs the given number of iteration steps.

Parameters:
maxIterations - Maximal number of iterations.
save - Solution will be saved into the associated SLEData.
Returns:
Residual norm achieved in the iteration.

getTotalResidual

protected double getTotalResidual()

set

public void set(java.lang.String key,
                java.lang.Object value)
Sets the given property.

Specified by:
set in interface Property
Overrides:
set in class DefaultProperty
Parameters:
key - Key string.
value - The new value.
See Also:
Property.commit()

get

public java.lang.Object get(java.lang.String key)
Gets the given property.

Specified by:
get in interface Property
Overrides:
get in class DefaultProperty
Parameters:
key - Key string.
Returns:
The actual value or null.

setTemplate

public static int setTemplate(Template t,
                              int ord)
General-purpose registration routine. Sets all plugs, strings, etc. to the given Template.