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.)