1. General theory of Finite Elements
  2. Consider a body in which the distribution of some unknown elements is required. The region is divided into an assembly of sub-divisions called elements. The elements are connected at joints - called nodes. The variable of interest will act over each element in a known manner. The number and type of elements are chosen so that the variable distribution is by approximated by the combined elements.

    The actual distribution of the variable of interest across each element may be defined by a polynomial (linear, quadratic, order ‘n’) or a trigonometric function.

    After the problem has been represented as element, (discretized) the governing equations, are assembled to give system equations. Once a general equation of an element type is derived, it’s a matter of substituting the material properties, loading and nodal co-ordinates for each element in the system equation, such a system equation may take the form

    is a square matrix called the stiffness matrix

    is the vector of unknown nodal displacements.

    is vector of applied nodal forces.

     

    To find say, the nodal displacements for a given applied nodal force, We could write it as and apply suitable boundary conditions, for displacement problems, this means fixed displacements, to avoid unrestrained motion. This is unlikely to work for all but very simplest of cases since matrix inversion/division is very difficult.

     

    Other ways of solving the equation above for example direct methods:-

    Gaussian elimination, Gauss-Jordan elimination, Cholsky’s elimination. There are also iterative methods which can give an answer to the accuracy required. If system of matrices are sparse and/or have large main diagonal entries these iterative methods converge quickly to give the required accuracy. Such methods are Gauss-Seidal, Jacobi iteration.

    Details of these numerical methods for linear systems are given in Chapter 19 of E. Kreyszig.

     

     

    1. A simple one dimensional element : the pin jointed bar
    2. The pin jointed bar is the simplest element, we will see how it is used in a stress analysis. The ends of the element are assumed to be pin jointed so it only transmits tensile or compressive axial forces. Referring to the diagram below it has two nodes i and j ; it lies in the x axis and therefore only experiences axial displacements. Assuming that the displacement u varies linearly along the bar (length- L) then

      u =a+bx : where a and b are constants.

      Diagram showing a) one-dimensional pin jointed bar b) equivalent finite element

       

      0We can now use this one dimension element, we will demonstrate its use in a typical application, stress analysis.

      When a structure is loaded it attains some equilibrium state, the potential energy of the system is at minimum. The potential energy of the system can be defined by :-

      For the single element we are considering, the strain energy stored in element following any deformation (assuming constant cross sectional area, A) is

    3. A one dimensional finite element example : a string.
    4.  

      Using this one dimensional linear element, we will demonstrate a one dimensional eigenvalue problem, that of a one dimensional string.

      Remember the characteristic eigenvalue is

      [K] is the global stiffness matrix and [m] the mass matrix.

       

      Lets consider the ‘string’ to be made of 4 linear elements :-

      Remembering that the stiffness matrix was written for nodes ‘i’ and ‘j’, the stiffness matrix for the element with nodes ‘j’ and ‘k’ would be

       

       

      The global stiffness matrix, is the sum of all the element stiffness matrix, with respect to their nodes . For this case it would be

      This assuming that the all elements have the same , of course they don’t have to,

      generally the term would be multiplied through, before assembling the global stiffness, matrix.

      So what about the [m], the simplest form this can take is lumped mass, where the mass is lumped at the nodes, this makes the [m] matrix diagonal. There are other schemes to produce mass matrices such as consistent mass where the shape function is used to define the distribution of mass across the element.

      Now we can solve this equation

      Assuming =2 and

      For non-trivial solutions we demand that :

      This piece analysis has been implemented in the matlab file, feaex.m It assembles the stiffness matrix as shown in the text, and solves the eigenvalue equation, the eigenvectors are normalised, but they so compare with the values calculated here.

      Below are plots of the first 3 eigenmodes calculated above.

       

      We are going to get a better approximation if we use more elements, lets run the program again, but with 8 elements.

      As the matlab program shows the effect of using a greater number of elements and for interpolation function. The cost of using interpolation functions for greater accuracy, is the computation time needed. Sometimes using more elements gives results to the required accuracy.

      Important things to notice from this is the way each element of the same type has the same elemental equation, and therefore its on local stiffness matrix k, the coordinates will be different for each element. In this case the material properties for each element in the same, however in the tabla model, the mass varies from one element to another.

    5. Further finite element theory.
    6. The idea’s of the previous section are extended in this section. Since the area of finite element analysis is so big, only the aspects which are relevant to the specific problem and the Abaqus program will be covered.

      1. The Finite Element eigenvalue expression

      As already discussed the eigenvalues and eigenvectors are very important in vibrational problems. They could provide away of implementing an efficient model, of the tabla.

      Once the a finite elements, are defined in the input file to the Abaqus program, there are a number of analysis’s which can be done. We did a eigenvalue analysis, which is defined by :-

      If we assume sinusoidal vibration

      The standard form of the eigenvalue equation is

      By comparing [Eq.16] with the eigenvalue equation :

      The elements used in the model have been defined as membrane having membrane properties, that is forces that act along member axis and tangential to element surfaces, it has strength but no resistance to bending. A rubber balloon of such a material with membrane properties.

      This makes the problem non-linear, something we avoided by simplification in the state space model. If the structure has an applied load, the stiffness of the structure will change due to the membrane forces, so we have to take this into account. The geometric stiffness matrix(stiffness due to the membrane forces) depends on the stresses of the structure so therefore is function displacement, thus making the problem non-linear.

      The problem now takes the form.

      To overcome this potential problem the geometric stiffness is calculated by recalculating the stiffness matrix after adjusting the nodal co-ordinates with the calculated displacements. This is usually done using the Newton-Raphson method.

      If the displacement is going to be small the load is applied in one step, over several iterations, this can been seen in the input file for the model.

      Including membrane forces, the eigenvalue equation, becomes

      If the material has no bending stiffness at all k=0.

      Once the local matrices are assembled into the global stiffness matrix, the boundary conditions have to be added just as in the example.

      These are entries into the {d} matrix.

    7. Derivation of the higher order element stiffness matrices.
    8. In the model, we used isoparametric triangular elements, and isoparametric Lagrange quadratic elements, the derivation of these elements will be show.

      1. Natural co-ordinates.
      2. When deriving governing elemental equations for more complicated elements, it is found that term’s are found by integration of some functions of the shape functions.

        For shape functions with sample linear terms this is easy but it can be made easier with natural co-ordinates. For higher order elements the integration has to be done numerically, for computer based applications this is usually done with gauss quadrature integration. The limits for gauss quadrature integration have to be in the range -1 to 1 or 0 to -1, by using natural co-ordinates based on the area of the elements these constraints can be met. Also in higher order elements, curved sides are allowed and the mid-side nodes do not have to be at the mid point of each side.

        Take this three noded example

        If P is moved from side jk towards node i, the area varies between 0 and 1, as the shape functions is not surprising then that

      3. Derivation of a stiffness matrix for a quadratic triangular element
      4. For a quadratic triangular element the interpolation function for the element is required to be in the form

        Where shape functions are found to be

        Let be a scalar field, interpolated from the nodal values , also x and y are co-ordinates interpolated from the nodal values of :

        If the same shape functions (N) are used in all three summations, the element is classed as isoparametric. Here the shape functions are those derived above.

         

        The areas co-ordinates, , are not independent the sum equals 1. Therefore we only need to use two of them to locate a point on the triangle , so we define

        In order to find the stiffness matrix, we require the stress-displacement relation, the axial strain defined as

        We can write that as

         

        Note however that [B] is in terms of x and y. We need to express [B] in terms of . We define [J] the jacobian matrix as being

        This allows the characteristic elemental equation to be formed, since it is expressed in terms of its natural co-ordinates, the limits of integration are such that it can be carried out by gauss quadrature method .

      5. Derivation of a stiffness matrix for a quadratic triangular element
      6. The stiffness matrix for the Langrange quadratic element is derived in the same way, as for the triangular element. It differs only in the size of the matrices, beings as there are more nodes, and the limits of integration

      7. Gauss Quadrature
      8. Both these expressions, need integrating, using gauss quadrature, so lets see how that works . Our stiffness equations have the form :-

         

        This works by sample the field, at a various points across surface, for one dimensional case it can be illustrated as follows :

        So here we approximate the area, in the first case by multiplied by the interval, 2.

        Using two integration points depending where were exactly, we would multiply each point by some weight. Thus the equation.... holds for ‘n’ integration points, there are tables of the integration points and their appropriate weights, to get the best results. The values happen to be the roots of the Lagrange interpolation polynomial.

      9. Membrane forces


    So lets look at the membrane forces,

    They are defined by

    An expression can be formulate for by considering the work done by the constant membrane forces as they act through the displacements associated with small lateral deflections. The membrane stresses known beforehand or are calculated by standard stress analysis.

    Membrane strains associated with small rotations of the mid-surface of the element are

    If the membrane forces are independent of small lateral deflections, then work done by the membrane forces and strains is

     

    From the displacement field one obtains the rotations, that is :

     

     

    Where J is the jacobian determinate.

     

     

     

  3. Introduction to the implementation of the finite element method.
  4.  

    The FE method has been used for years, for solving a variety of problems. One of its first uses was in the stress calculations for aircraft parts. Its popularity has grown with the advances in computer technology. It has developed into a powerful method for solving differential equations. Although the it can be used for a wide number of the differential field problems, the basic procedure is still the same.

     

    I used the Abaqus package running on the HP Apollo machines. Most packages follow the same format of a pre-processor, the analysis stage and a post-processor. In the pre-processor file, the nodes and elements, and type of analysis, and all the information needed for the analysis, are declared. During the analysis stage, the actual computation is done, various files are created, all specified in the input file. The post-processor stage, uses the files created during the analysis, to present the results, in a graphical way. The files created for use with the post-processor are not readable(not text files), files can be created which are text files, that can be perused after the analysis.

    The format of the input file, is very ordered, on the next pages is a flow chart of the different stages in the input file.

     

     

     

    The input data file to the finite element program contains the all the information about the geometry of the components and their material properties, which make up the model. How the problem is discretized, into elements, is up to the programmer and his experience.

    I will go though the input file kindly made for me by Prof. Kazeem Kormi, describing what each line does. This will show how a model is assembled and it might hint at the sheer complexity, which models could take on. A full uninterrupted copy of the program is in the appendix.

    1. Break down of the finite element input file
    2.  

      *heading - This is just for reference.

      *preprint, - This selects the printout, from the pre-processor,

      echo=yes - echos the input data again

      model=no - model definition off

      history=no - history off

       

      The next section defines the principle nodes. Once these are defined, the *nfill, *ngen, and ncopy commands, are used to generate a 2d system of nodes.

      Lets look at the basic *node command

      *NODE n,x,y,z

      -where n-node number, x,y,z - co-ordinates.

      Here the node command is used with the nset command, which simply labels a node or group of nodes with an identifier for reference latterly in the file.

      *NODE, NSET=N1

      1, , , ,

      *NODE, NSET=N9

      9,30., , ,

       

      Defines node number 1, which has an identifier N1 at coordinates 0,0,0 (spaces in between comma’s = zero’s). The second line defines node 9 (N9) at coordinates 30.0,0,0

      The units of length used are up to the user, but must be kept consistent through out the file, this is very important when it comes to densities and Young’s modulas etc. which are inputted later in file.

       

      So in the first few line nodes 1, 9, 10, 30, 36, and 38 are defined, and are labelled with the identifier’s Nx . Also nodes 40, and 1000 are defined. Lets look at these.

      Notice that nodes 9 and 10 (N9 and N10), have the same coordinates, they are overlapping and not connected together in any way(yet).

      The next procedure is to fill in the nodes between N1, N9/N10, N30, N36, and N38.

      This is done for the ‘linear/one dimensional’ with the *NFILL command.

      Lets take the first *NFILL command -

      *NFILL, NSET=R1, BIAS=1.1, TWOSTEP

      N1,N9,8,1

       

      This fills in the nodes between N1 and N9, with 8 nodes, and the node numbers are incremented by 1 each time. The new set of nodes form the node set R1. Finally the nodes are placed with a bias of 1.1, so they do not have a uniform distance between them. The TWOSTEP tag, ensures that only the bias is applied to every second node, this means even numbered nodes, will be in the centre, of adjacent nodes. This is very important when second order elements are used, which require extra nodes at the mid-point of their vertices.

       

      *NFILL, NSET=R1, BIAS=1.025, TWOSTEP

      N10,N30,20,1

       

      The second *NFILL command, fills in the nodes between N10 and N30, with 20 nodes, with a bias(which affects ever other node) of 1.025. These new nodes form part of the set R1.

      *NGEN, NSET=R1, LINE=C

      30,36,1,40, , , , ,1, ,

       

      This generates the nodes between 30 and 36, the new nodes form part of the set R1.

      As you will see from the diagram, nodes 30 and 36 form the endpoints of a 90deg arc,(the edge of the drum). The LINE=C indicates that nodes are to be generated in a circle, the point of rotation is node 40, and the nodes numbers are in increments of one. Finally the last three numbers indicate which plane(x,y,z) the circle is, here its in the x plane.

      *NGEN, NSET=R1

      36, 38,1

       

      This simply generates the nodes between 36 and 38 (37) with uniform distribution, the nodes numbers are incremented by 1, and they are added to the set R1.

      *NCOPY, OLDSET=R1, CHANGENUMBERS=40, SHIFT, MULTIPLE=35, NEWSET=RS

      0.,0.,0.

      0.,0.,-1.,0.,0.,1.,10.

       

      This command takes our node set R1 and rotates (indicated by the ‘SHIFT’) and copies it, 35 times, the resulting set of nodes is called RS. Each time the node set R1 is rotated the node numbers have 40 added to them. The first line of numbers indicate the value of shift, in this case none, the first, the second line defines two points one at (0,0,-1) and (0,0,1), this essentially define the Z plane as that of rotation, the last number is the angle of rotation (10 degrees), through which R1 is rotated.

      Now we have rotated the nodes we are left with a large system of nodes, what remains is to define the elements. First we define, some new node sets, the importance of these new node sets will become apparent later on.

      *NSET, NSET=CONS1,GEN

      9,1409,40

       

      The defines the node set CONS1, which starts from node 9 and ends at node 1409, in increments in 40’s. The GEN tag forces the set to be defined by existing node numbers.

       

      *NSET, NSET=CONS1,GEN

      10,1410,40

       

      This similarly defines the node set CONS2, which starts from node 10 and ends at node 1410, in increments in 40’s.

      These sets each form a concentric circle, around the origin and have the same radius as the x coordinate’s of node9(CONS1) and node10(CONS2). These nodes overlap at the coordinates (30,0,0). As stated before although the nodes overlap, they are not in any way fixed to each other, when we rotated and copied the node set R1, the resulting node numbers 9+40n and 10+40n when n is an integer, although overlapping, are not fixed either.

      *NSET,NSET=PULL,GEN

      38,1438,40

       

      This defines the node set pull, which are the nodes along the edge of the radius. Later there will be a displacement on them, to tension the drum.

       

      Here we have used two different geometry’s of element , the m3d6 and m3d9,

      these are membrane elements , with 6 and 9 nodes respectively.

      *ELEMENT, TYPE=m3d6, ELSET=CENT

      1,1,3,83,2,43,82

      2,1,83,163,82,123,162

      3,1,163,243,162,203,242

      etc.

       

      This defines the master elements, they are all of the m3d6 type, and they form the element set, cent, these are the centre elements. The first number is the element number, these are consecutive. The next six numbers are the nodes numbers which the element is associated with. Notice how they are in the ordered, following the order in the top diagram.

      *ELEMENT, TYPE=m3d9, ELSET=CENT

      19,3,5,85,83,4,45,84,43,44

      36,1363,1365,5,3,1364,1405,4,1403,1404

       

      This defines the master elements which are of the m3d9 type. The format is the same as before, the first number is the element number and subsequent numbers are the nodal coordinates.

       

      *ELGEN,ELSET=CENT

      19,17,80,1,3,2,18

      36, 3,2,18

       

      This fills in the elements around the centre, using element 19, the four sided element, as a master element. 17 elements are to be defined, the node numbers are incremented by 80 each time. The element number is to be incremented by 1 each time. There are 3 rows (radially, in this case), and the nodes numbers are incremented by 2 (outwards), the element numbers are increment by 18 per row.

      Also element 36 is copied outwards. These all form the element set cent, and represent the sythi.

      The diagram below should clarify, the explanation.

      *ELGEN,ELSET=OUT

      101,17,80,1,14,2,18

      118, 14,2,18

      This once again defines the rest of the elements which represent the lao, area of the puri. The format is the same as before. Using 101 as the master element 17 elements are defined in each radius, with a node number increment of 80, and an element number increment of 1. 14 rows are also defined, the node numbers increment by 2 from row to row, and the element numbers are incremented by 18. Then element 118, is used to generate elements, outwards. These form the set, out.

       

      *ELSET, ELSET=CNT,GEN

      281,334,1

      This makes all of the elements from 281 to 334 (in increments of 1) an element set. In physical terms these are the elements which are in contact with the rigid surface (not yet defined).

      *MEMBRANE SECTION, ELSET=CENT, MATERIAL=CC

      1.8, 3

      This defines the element set, 'CENT' as having membrane properties, and having the material properties of the material 'CC'. CC is just an identifier the actual properties are declared later in the program.

      The membrane section, has thickness of 1.8mm.

      This type of property is used to represent thin surfaces, which have strength but no bending stiffness.

       

      *MEMBRANE SECTION, ELSET=OUT, MATERIAL=RR

      0.3, 3

      Once again this define the element set 'OUT', as have membranes properties which has material properties as the material 'RR'. Its thickness is 1.8mm.

       

      *MATERIAL, NAME=RR

      *DENSITY

      4.6E-9

      *ELASTIC

      0.67E4, 0.45

       

      This defines the material properties of the material RR. For a membrane section the properties needed are the density, Poisson’s ratio, and the young’s modulas.

      The density is defined as 4.6E-9 (kg/mm cubed), and the young’s modulas as 1E4, the Poisson ratio, is 0.45.

      *MATERIAL, NAME=CC

      *DENSITY

      4.6E-9

      *ELASTIC

      1E4, 0.45

      Once again this defines the material properties of material CC.

      The density= 4.6E-9 kg/mm cubed, young’s modulus=1E4, and the Poisson’s ratio=0.45.

       

      *RIGID SURFACE, TYPE=REVOLUTION, NAME=MSURF, REFNODE=1000, SMOOTH=1

      0.,0,-2.5,0.,0.,0.

      START, 65.,1.5

      LINE, 70.,2.5

      CIRCL, 72.5,0.,70.,0.

      LINE, 72.5,-7.5

      This defines a rigid surface, the type will be a volume of revolution, its identifier is MSURF, the reference node will be node number 1000. The SMOOTH=1 defines radius of curvature, over which to smooth discontinuities between adjoining straight line and circular arc elements.

      The first row of numbers define the global coordinates,(from which subsequent local coordinates will be relative to) and the axis of rotation.

      START, 65.,1.5 - This sets the point to start drawing from

      LINE, 70.,2.5 - This draws a line to (70,2.5)

      CIRCL, 72.5,0.,70.,0. - This draws a circle, (72.5,0.) are the end point node, (70,0) is the centre of the arc.

      LINE, 72.5,-7.5 - This draws a line to (72.5,-7.5)

      *SURFACE DEFINITION, NAME=SSURF,

      CNT,SNEG

      This defines the direction of the contact surface between the element set and whatever its touching(in this case the rigid surface). The element set is CNT, and the direction is SNEG - which means its a negative outward normal. The other possibility is SPOS (positive outward normal).

       

      *CONTACT PAIR, INTERACTION=MU

      SSURF,MSURF

      This defines the to surfaces ssurf and msurf to be in contact with each other. The interaction (friction) between are defined by the identifier MU.

      *SURFACE INTERACTION, NAME=MU

      *FRICTION

      0.1

      This define the fricative constant between for a particular contact pair, in this case its the only contact pair, MU.

      *MPC

      TIE,CONS1,CONS2

      This defines a multi-point constraint, between the node sets CONS1 and CONS2

      this effectively fixes the inner elements (type m3d6) with the outer elements(type m3d9). The 'TIE', makes all the degrees of freedom equal at each node.

      *AMPLITUDE, TIME=STEP,VALUE=R, NAME=ZDISP

      0.,0.,1.,1.

      This command allows a arbitrary time variations of the load displacements.

      Here 'time', is step time, and the values given are relative magnitude, the displacement has an identifier 'ZDISP'.

      *RESTART, WRITE, FREQ=1

      This opens/creates a restart file, its updated at every increment of the analysis. All the results are stored here.


      *STEP, NLGEOM,INC=5

      This is the first step in the analysis, the loading given by the amplitude command is applied, instantly at the beginning of the step. The NLGEOM tag, indicates that non-linear geometry should be taken into account, during this step. The INC=5 indicates that the maximum number of increments during the step is 5.

      *STATIC

      1.,1.,,1.

      This indicates that the step as a static load step. A time scale is assigned to the analysis. over which the load are applied gradually in increments. The size of the increments can be automatic, or defined by the user.

      Here the second line means that the initial time increment is 1, the time period of the step is 1, there is no minimum value of the of the time increment allowed, and the maximum size increment is one.

       

      *BOUNDARY, AMP=ZDISP

      pull,1,2,0.

      pull,3,,-.05

      1000,1,6,.0

      This describes the boundary conditions of the modal, the first number is the start dof, the second number is the end dof, and the third number is the displacement of all the dofs from the start to end numbers.

      Thus the node set pull(the ones around the edge) have a displacement of 0 in the x and y dof's. The second line defines a displacement of -0.05 in the z direction (downwards). The third line sets all the displacements of all the dof's to 0, for node 1000.

       

       

       

       

      *NODE PRINT, FREQ=200

      U

      RF

      This defines the output of the nodal variables to a file, here we output the displacements (U) and the reaction forces at the fixed boundaries.

      The values are outputted every 200 increments.

      *EL PRINT, POSITION=AVERAGED AT NODES,FREQ=200

      S

      This define the output of element variables, the values are the averages of values extrapolated to the nodes of the elements in the set. The output will be split between elements with different properties.

      Here we are output the stresses in the elements, every 200 increments.

      *NODEFILE, FREQ=1

      U

      RF

      CF

      This define the nodal variables to be send to the results file, here we output the displacement, reaction forces and contact forces, every increment.

      *EL FILE, POSITION=AVERAGED AT NODES, FREQ=1, ELSET=CNT

      S

      SE

      This define the element variables to send the results file, here we output the stresses(S) and section strain, curvature change, and twist components(SE).

       

       

       

       

       

      *CONTACT FILE, FREQ=1, MASTER=MSURF, SLAVE=SSURF

      This outputs the contact variables, which are contact pressure, frictional shear stresses, contact opening(clearance) and relative tangential(slip) motions. Here we have specified that we want the variables for both the master and slave contact surfaces, we could have one or the other, or any other contact interactions if there were anymore. The values are sent to the file every increment.

      *MONITOR, NODE=1, DOF=3, FREQ=1

      This allows a degree of freedom to be monitored during the execution of the analysis. Here we choose to watch the 3rd DOF (Z direction) of node 1, the output to the message and status file is every increment.

       

      *END STEP

      This marks the end of the first step.

      *STEP, NLGEOM

      This marks the beginning of a new step, once again the non-linear geometry is taken into account.

      *FREQUENCY

      10,1000,45,50

      This does the eigenvalue extraction, the stiffness determined at the previous step, is used as the basis for the extraction process. This allows small vibrations of a preloaded structure to be modelled.

      The first ten eigenvalues, are to be calculated, the maximum frequency of interest is 1000Hz. The shift point is 45, eigenvalues closest to this point, will be extracted.

       

      *BOUNDARY, OP=NEW, FIXED

      PULL,1,3,0.

      1000,1,6,0.

      This resets the boundary conditions, the OP=NEW, removes all of the boundary condition's, and replaces them with new conditions.

      The node set pull, is restrained, in the x,y, and z directions, and node 1000 is restrained fixed in all dofs.

      *ELPRINT, FREQ=0

      This suppresses all output to the output file regarding element variables.

      *MODAL FILE

      This is a request to output the eigenvalues to the output file.

      *END STEP

      This ends the step and the program.

       

       

       

    3. Results of Finite element analysis.

The output of the finite element was specified to be the eigenvalues, and eigenvectors. Using the post-processor, the displaced mesh, can be viewed at each eigenvalue. Hard-copies of the eigenvectors are included on following pages.

Several analysis’s were done, first I made the densities of the sythi and lao the same. This represents a ‘normal’ drum, as expected the eigenvalues, did not form a harmonic series.

Then I set densities of the sythi and lao to those of measured, and experimented with ‘pulling’ the ‘puri’ at the edges, once again as expected the eigenvalues formed a harmonic series.

In the state-space models, the effect of the chianti (the ring of leather around the edge of the puri), and the body of the drum were not taken into account. Nor were they taken into account in the finite element model, but they could have been. The extra elements, needed to be represent the chianti, could be defined, and their contact surface interaction could be modelled. Also 3 dimension elements with the properties air, could have been assembled underneath the puri. Doubtless they could be contained within another element set representing the wooden shell. Professor Kazeem Kormi assures me that all things are possible, but obviously things get complicated, for that level of accuracy and complexity.

On the following pages are a table of results, showing the calculated eigenvalues, notice how they form a harmonic series.