fhm.edu.fem.calc
Class FEMCalcMembrane

java.lang.Object
  extended by fhm.edu.fem.calc.FEMCalc
      extended by fhm.edu.fem.calc.FEMCalcGauss
          extended by fhm.edu.fem.calc.FEMCalcTemperature
              extended by fhm.edu.fem.calc.FEMCalcMembrane
Direct Known Subclasses:
FEMCalcCircleMembrane

public class FEMCalcMembrane
extends FEMCalcTemperature

Class Description: This class is being used when we have a FEM4 files for Membran calculations. Any node designated as border node in the FEMIN File is taken out of the calculations (all other get Alias IDs)

Author:
Thomas Woellert (thomas@woellert.net), Stefan Weissbach (weissbst@gmx.de)

Field Summary
protected  NodeList aliasIDNodeList
           
protected  Matrix C
           
protected  Matrix completeMassMatrix
           
protected  Matrix L
           
 
Fields inherited from class fhm.edu.fem.calc.FEMCalcTemperature
alpha, fxyValue, OUTER_POINTS_LINE_INTEGRAL, vectorB
 
Fields inherited from class fhm.edu.fem.calc.FEMCalcGauss
INNER_POINTS, OUTER_POINTS
 
Fields inherited from class fhm.edu.fem.calc.FEMCalc
APPROACH_LINEAR, APPROACH_QUADRATIC, completeStiffnessMatrix, femManager, localLogger, startTime, tmpTime, totalTime
 
Constructor Summary
FEMCalcMembrane()
          Create a new FEM Calculator for Membrane Calculations
 
Method Summary
protected  void calcEigenvectorError(Vector u)
          Part 2-5 : Helper Method - Error calculation ######################## Used to calculate the error between the calculated results in vector u and the exact results calculated by sin(i*(pi/a)*x) * sin(j*(pi/b)*y)
protected  double calcExactEigenvectorValues(double a, double b, double x, double y, int i, int j)
          Calculate the exact eigenvector values via formula : sin(i*(pi/a)*x) * sin(j*(pi/b)*y)
protected  boolean calculateC()
          PART OF THE JACBO ALGORITHM - Calculate C
protected  boolean calculateJacobi()
          Calculate the Jacobi, you need to calculate the Matrix C first
protected  boolean calculateRAY()
          Calculate the RAYLEIGH ALGORITHM
protected  boolean calculateSVI()
          Calculate the SVI ALGORITHM
protected  boolean compileMassMatrix()
          Compile the Complete-Mass-Matrix
protected  boolean compileStiffnessMatrix()
          Do the compilation with the Gauss-Quadrature-Integration with it's size depending on the number of inner nodes we still have after creating the alias IDs
protected  boolean createAliasList()
          Create the alias List
protected  void postCalculationTransformations(Vector u)
          This is a helper method combining all post calculation transformations needed by a result vector.
 boolean start()
          Call this method to start the calculation
 
Methods inherited from class fhm.edu.fem.calc.FEMCalcTemperature
calculate, createLineIntegral, createVectorB, displaySpecificResults
 
Methods inherited from class fhm.edu.fem.calc.FEMCalcGauss
compilation
 
Methods inherited from class fhm.edu.fem.calc.FEMCalc
getCompleteStiffnessMatrix, getTotalTime
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

aliasIDNodeList

protected NodeList aliasIDNodeList

C

protected Matrix C

completeMassMatrix

protected Matrix completeMassMatrix

L

protected Matrix L
Constructor Detail

FEMCalcMembrane

public FEMCalcMembrane()
Create a new FEM Calculator for Membrane Calculations

Method Detail

calcEigenvectorError

protected void calcEigenvectorError(Vector u)
Part 2-5 : Helper Method - Error calculation ######################## Used to calculate the error between the calculated results in vector u and the exact results calculated by sin(i*(pi/a)*x) * sin(j*(pi/b)*y)

Parameters:
u, - the result vector u

calcExactEigenvectorValues

protected double calcExactEigenvectorValues(double a,
                                            double b,
                                            double x,
                                            double y,
                                            int i,
                                            int j)
Calculate the exact eigenvector values via formula : sin(i*(pi/a)*x) * sin(j*(pi/b)*y)

Parameters:
a, - length of membran side a
b, - length of membran side b
x, - the x value of the point we want to calculate the eigenvector value for
y, - the y value of the point we want to calculate the eigenvector value for
i, - the i-value we use
j, - the j-value we use
Returns:
double, the result

calculateC

protected boolean calculateC()
PART OF THE JACBO ALGORITHM - Calculate C

Returns:
true if all went well, false otherwise

calculateJacobi

protected boolean calculateJacobi()
Calculate the Jacobi, you need to calculate the Matrix C first

Returns:
true if all went well, false otherwise

calculateRAY

protected boolean calculateRAY()
Calculate the RAYLEIGH ALGORITHM

Returns:
true if all went well, false otherwise

calculateSVI

protected boolean calculateSVI()
Calculate the SVI ALGORITHM

Returns:
true if all went well, false otherwise

compileMassMatrix

protected boolean compileMassMatrix()
Compile the Complete-Mass-Matrix

Returns:
true if all went well, false otherwise

compileStiffnessMatrix

protected boolean compileStiffnessMatrix()
Do the compilation with the Gauss-Quadrature-Integration with it's size depending on the number of inner nodes we still have after creating the alias IDs

Returns:
true if all went well, false otherwise

createAliasList

protected boolean createAliasList()
Create the alias List

Returns:
true if all went well, false otherwise

postCalculationTransformations

protected void postCalculationTransformations(Vector u)
This is a helper method combining all post calculation transformations needed by a result vector. Means it is converted from it's smaller size into a full result vector we can store in the FEMOUT file (storing the results in the FEMManager is also handeled by this method).

Parameters:
u, - the u vector to handle

start

public boolean start()
Call this method to start the calculation

Overrides:
start in class FEMCalcTemperature
Returns:
true if all went well, false otherwise