fhm.edu.fem.calc
Class FEMCalcSpanner

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
                  extended by fhm.edu.fem.calc.FEMCalcCircleMembrane
                      extended by fhm.edu.fem.calc.FEMCalcSpanner

public class FEMCalcSpanner
extends FEMCalcCircleMembrane

Class Description: This class is being used when we have FEM6 files for Spanner calculations.

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

Field Summary
protected  int maxSigmaElementIndex
           
protected  Vector vectorR
           
 
Fields inherited from class fhm.edu.fem.calc.FEMCalcCircleMembrane
besselValues, besselValuesInitialized, membraneCircle
 
Fields inherited from class fhm.edu.fem.calc.FEMCalcMembrane
aliasIDNodeList, C, completeMassMatrix, 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
FEMCalcSpanner()
          Create a new FEM Calculator for Spanner Calculations
 
Method Summary
protected  boolean buildVectorR()
          Build the Vector R
protected  boolean calcSigma()
          Calculate Sigma
protected  boolean calculate(Calculation calc)
          Do the calculation
protected  Matrix calculateElementStiffnessMatrixViaIntegral(Element element)
          Create the Element-Stiffness-Matrix for the given Element via the Integral
protected  Matrix calculateElementStiffnessMatrixViaSMatrix(Element element)
          Create the Element-Stiffness-Matrix for the given Element via the S-Matrices
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
 int getMaxSigmaElementIndex()
           
protected  boolean modifyNodePositions()
          Modify the positions of the nodes depending on the result vectors
 boolean restartAfterForceChange()
          Call this method to restart the calculation when the forces have been changed in the animation.
 boolean start()
          Call this method to start the calculation
 
Methods inherited from class fhm.edu.fem.calc.FEMCalcCircleMembrane
calculateExactEigenvalues, compileMassMatrix, getBesselValue
 
Methods inherited from class fhm.edu.fem.calc.FEMCalcMembrane
calcEigenvectorError, calcExactEigenvectorValues, calculateC, calculateJacobi, calculateRAY, calculateSVI, createAliasList, postCalculationTransformations
 
Methods inherited from class fhm.edu.fem.calc.FEMCalcTemperature
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

maxSigmaElementIndex

protected int maxSigmaElementIndex

vectorR

protected Vector vectorR
Constructor Detail

FEMCalcSpanner

public FEMCalcSpanner()
Create a new FEM Calculator for Spanner Calculations

Method Detail

buildVectorR

protected boolean buildVectorR()
Build the Vector R

Returns:
true if all went well, false otherwise

calcSigma

protected boolean calcSigma()
Calculate Sigma

Returns:
true if all went well, false otherwise

calculate

protected boolean calculate(Calculation calc)
Do the calculation

Overrides:
calculate in class FEMCalcTemperature
Parameters:
calc, - the calculation object
Returns:
true if all went well, false otherwise

calculateElementStiffnessMatrixViaIntegral

protected Matrix calculateElementStiffnessMatrixViaIntegral(Element element)
Create the Element-Stiffness-Matrix for the given Element via the Integral

Parameters:
element, - the element to calculate the stiffness matrix for
Returns:
the ElementStiffnessMatrix

calculateElementStiffnessMatrixViaSMatrix

protected Matrix calculateElementStiffnessMatrixViaSMatrix(Element element)
Create the Element-Stiffness-Matrix for the given Element via the S-Matrices

Parameters:
element, - the element to calculate the stiffness matrix for
Returns:
the ElementStiffnessMatrix

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

Overrides:
compileStiffnessMatrix in class FEMCalcCircleMembrane
Returns:
true if all went well, false otherwise

getMaxSigmaElementIndex

public int getMaxSigmaElementIndex()
Returns:
Returns the maxSigmaElementIndex.

modifyNodePositions

protected boolean modifyNodePositions()
Modify the positions of the nodes depending on the result vectors

Returns:
true if all went well, false otherwise

restartAfterForceChange

public boolean restartAfterForceChange()
Call this method to restart the calculation when the forces have been changed in the animation. The new forces must have been changed in the FEMManager for the changes to take effect in the results of the calculation. PLEASE NOTE: YOU NEED TO START THE CALCULATION THE NORMAL WAY VIA start() AT LEAST ONCE FIRST BECAUSE IN restartAfterForceChange() THE COMPLETE-STIFFNESS-MATRIX IS NOT RECALCULATED BECAUSE IT DOES NOT CHANGE WHEN THE FORCES CHANGE ! IF YOU DID NOT CALL start() FIRST THE COMPLETE-STIFFNESS-MATRIX IS RECALCULATED in restartAfterForceChange() AUTOMATICALLY !

Returns:
true if all went well, false otherwise

start

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

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