FeResPost Web Site                     FeResPost Online User Manual

IV.3.2 Manipulating composite entities

The example illustrates the manipulation of objects of the classes defined in FeResPost. The example is presented in directory “TESTSAT/RUBY/EX12”, in file “testCla.rb”.

One first creates a ClaDb and initializes it by reading an ESAComp data file:

   db=ClaDb.new
   db.Id="testDB"
   db.readEdf("test.edf")

Then, a new ClaMat “mat1” is created. Its data are initialized by calls to the appropriate methods, and the material is inserted into the ClaDb:

   mat1=ClaMat.new
   mat1.Id="mat1"
   mat1.Type="isotropic"
   mat1.fillModuli({"E"=>72e9,"nu"=>0.33})
   mat1.fillCTEs({"alfa"=>2.3e-5})
   db.insertMaterial(mat1)

The ClaMat object previously stored into the ClaDb is retrieved into “mat2” variable. The material stiffness matrix is requested and its components are printed:

   mat2=db.getMaterialCopy("mat1")
   stiffMat = mat2.getStiffness
   printf("\n\n   stiffMat:\n\n")
   stiffMat.each do |line|
      line.each do |cell|
         printf("%14g",cell)
      end
      printf("\n")
   end

(Similarly, the compliance matrix is printed for the same material.) The following instructions illustrate the creation of a ClaLam object that is stored in the ClaDb:

   lam=ClaLam.new
   lam.Id="testLam"
   lam.addPly( 1,"mat1",0.00037,  0.0,30e6)
   lam.addPly( 2,"mat1",0.00037, 45.0,30e6)
   lam.addPly( 3,"mat1",0.00037,-45.0,30e6)
   lam.addPly( 4,"mat1",0.00037, 90.0,30e6)
   lam.addPly(15,"mat1",0.00037, 90.0,30e6)
   lam.addPly( 6,"mat1",0.00037,-45.0,30e6)
   lam.addPly( 7,"mat1",0.00037, 45.0,30e6)
   lam.addPly( 8,"mat1",0.00037,  0.0,30e6)
   lam.addPly(16,"mat1",0.00037,  0.0,30e6)
   db.insertLaminate(lam)

Then, characteristics of the laminate like the stiffness and compliance matrices are printed. the following lines illustrate the printing of the laminate ABBD (stiffness) matrix:

   ABBD = lam.get_ABBD
   printf("\n\n   ABBD:\n\n")
   ABBD.each do |line|
      line.each do |cell|
         printf("%14g",cell)
      end
      printf("\n")
   end

Note that the quantities can be printed in any direction wrt laminate axes. For example, the following lines illustrate the printing of laminate thermal expansion coefficient in direction 45 wrt laminate axes:

   alfaEh1 = lam.get_alfaEh1(45.0)
   printf("\n\n   alfaEh1 (45o):\n\n")
   alfaEh1.each do |cell|
      printf("%14g\n",cell)
   end

Similarly, the vector {α0ϵ} is printed. Finally, the ClaDb is saved into a neutral file. (This neutral file “test.ndf” is used in the other composite examples.)