cz.cuni.jagrlib.piece
Class SLEProgressive

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

public class SLEProgressive
extends Piece
implements SLESolver

SLE solver: progressive refinement (PR). Used mainly in radiosity. Over-relaxation and PR with ambient term are implemented so far.

See Also:
SLEProgressive.java

Field Summary
protected  double ambient
          Ambient term (represents total unshot radiosity in the environment).
protected  double[] B
          Actual vector of unknown variables.
protected  double[] B2
          Second vector of unknown variables for ambient term.
protected static java.lang.String CATEGORY
          Object category.
protected  SLEData data
          Accelerator: input SLEData.
protected  double[] dB
          Actual vector of unshoot radiosity.
protected  double epsilon
          Required accuracy of solution (max. norm of dB vector).
static java.lang.String EPSILON
           
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[] reflectance
          Reflectance of each element.
protected  double refTotal
          Avarage reflectance.
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 USE_AMBIENT
           
protected  boolean useAmbient
          Use ambient term?
protected  double[] weight
          Weights of unknown variables (element areas).
 
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
SLEProgressive()
           
 
Method Summary
 int actualComponent()
          Get actual component number.
protected  void computeAvgReflectance()
          Compute avarage reflectance.
 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 iterative solution algorithm (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)
          Solve the whole system.
 void update()
          Input data was changed, solver should adapt to it.
protected  void updateAmbient()
          Update ambient term.
 
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.


epsilon

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


omega

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


useAmbient

protected boolean useAmbient
Use ambient term?


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.


B2

protected double[] B2
Second vector of unknown variables for ambient term.


dB

protected double[] dB
Actual vector of unshoot radiosity.


K

protected double[] K
Actual matrix column.


weight

protected double[] weight
Weights of unknown variables (element areas).


reflectance

protected double[] reflectance
Reflectance of each element.


refTotal

protected double refTotal
Avarage reflectance.


ambient

protected double ambient
Ambient term (represents total unshot radiosity in the environment).


isInitialized

protected boolean isInitialized
Was the solver already initialized?


EPSILON

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

USE_AMBIENT

public static final java.lang.String USE_AMBIENT
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

SLEProgressive

public SLEProgressive()
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 SLEDataStore.

reset

public void reset()
Reset iterative solution algorithm (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 SLEDataStore.
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)
Solve the whole system.

Parameters:
maxIterations - Number of iterations requested.
save - Solution will be saved into the associated SLEDataStore.

computeAvgReflectance

protected void computeAvgReflectance()
Compute avarage reflectance. Must be called before updateAmbient().


updateAmbient

protected void updateAmbient()
Update ambient term. Must be used after call of updateAmbient().


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.