HyperMesh and BatchMesher

Example FE-Input Code

Example FE-Input Code

Previous topic Next topic No expanding text in this topic  

Example FE-Input Code

Previous topic Next topic JavaScript is required for expanding text JavaScript is required for the print function  

Example FE-Input Code ([Install Directory]\hm\examples\feinput\ExampleFEInput.cxx)

 

#include <iostream>

#include <fstream>

#include <cstring>

#include "hmlib.h"

#include "hminlib.h"

using namespace std;

 

//Material Data Structure

int nummaterials;

struct materials {

 char name[12];

 int id;

 double E;

 double G;

 double NU;

 double RHO;

 double A;

 double TREF;

 double GE;

 double ST;

 double SC;

 double SS;

} material[100];

 

//Function Prototypes

int get_data(char *fileptr);

entityfunctionptr HM_getfunction(int function, HM_entitytype entities);

int HM_getMaterials();

 

int main(int argc, char *argv[])

{

 /* The main function calls get_data to process the data in the solver deck,

  initializes HyperMesh, sets the solver to 100 (the same number defined in

  the template), reads the model and passes material data structures to HyperMesh,

  and finally closes the connection between HM and the FE-input reader. */

 

 get_data(argv[1]);

 HMIN_init("ExampleFEInput", "10.0", argc, argv);

 HMIN_setsolver(100);

 HMIN_readmodel(HM_getfunction);

 HMIN_close();

 

 return(0);

}

 

int get_data(char *fileptr)

{

 /* This function opens a solver deck defined as the first argument on the

 input line and reads the solver deck for MAT1 cards.  If a MAT1 card is found

 then the MAT1 solver card is read and a material data structure is populated. */

 

 ifstream infile;

 char token[9];

 char line[128];

 

 //Open Solver Deck

 infile.open(fileptr, ios::in);

 if (infile.fail())

         return(1);

 

 //Read Solver Deck for MAT1 Solver Cards and Populate Material Data Structure

 nummaterials = 0;

 while (!infile.eof())

 {

         infile.get(token, 9);

         if (strcmp(token, "MAT1    ") == 0)

         {

                 //Name

                 strcpy_s(material[nummaterials].name, "material");

                 //id

                 infile.get(token, 9);

                 material[nummaterials].id = atoi(token);

                 //E

                 infile.get(token, 9);

                 material[nummaterials].E = atof(token);

                 //G

                 infile.get(token, 9);

                 material[nummaterials].G = atof(token);

                 //NU

                 infile.get(token, 9);

                 material[nummaterials].NU = atof(token);

                 //RHO

                 infile.get(token, 9);

                 material[nummaterials].RHO = atof(token);

                 //A

                 infile.get(token, 9);

                 material[nummaterials].A = atof(token);

                 //TREF

                 infile.get(token, 9);

                 material[nummaterials].TREF = atof(token);

                 //GE

                 infile.get(token, 9);

                 material[nummaterials].GE = atof(token);

                 infile.get();

                 //Blank Field

                 infile.get(token, 9);

                 //ST

                 infile.get(token, 9);

                 material[nummaterials].ST = atof(token);

                 //SC

                 infile.get(token, 9);

                 material[nummaterials].SC = atof(token);

                 //SS

                 infile.get(token, 9);

                 material[nummaterials].SS = atof(token);

                 infile.get();

                 nummaterials++;

         }

         else

                 infile.getline(line, sizeof(line));

 }

 

 return(0);

}

 

entityfunctionptr HM_getfunction(int function, HM_entitytype entities)

{

 /* This user-defined function is passed into hminlib and is

 used by hminlib to find all of the user-defined functions

 which perform reading and information passing.  Note

 that if a user-defined function is not required, this function

 must return NULL. */

 

 switch (function)

 {

         case HMIN_OPENFUNCTION:

                 break;

         case HMIN_ENTITYOPENFUNCTION:

                 break;

         case HMIN_ENTITYGETFUNCTION:

                 switch (entities)

                 {

                         case HM_ENTITYTYPE_NULL:

                                 break;

                         case HM_ENTITYTYPE_CARDS:

                                 break;

                         case HM_ENTITYTYPE_SYSTCOLS:

                                 break;

                         case HM_ENTITYTYPE_SYSTS:

                                 break;

                         case HM_ENTITYTYPE_NODES:

                                 break;

                         case HM_ENTITYTYPE_VECTORCOLS:

                                 break;

                         case HM_ENTITYTYPE_VECTORS:

                                 break;

                         case HM_ENTITYTYPE_MATS:

                                 return(HM_getMaterials);

                         case HM_ENTITYTYPE_PROPS:

                                 break;

                         case HM_ENTITYTYPE_COMPS:

                                 break;

                         case HM_ENTITYTYPE_GROUPS:

                                 break;

                         case HM_ENTITYTYPE_ELEMS:

                                 break;

                         case HM_ENTITYTYPE_LOADCOLS:

                                 break;

                         case HM_ENTITYTYPE_EQUATIONS:

                                 break;

                         case HM_ENTITYTYPE_LOADS:

                                 break;

                         case HM_ENTITYTYPE_GEOMETRY:

                                 break;

                         case HM_ENTITYTYPE_LINES:

                                 break;

                         case HM_ENTITYTYPE_SURFS:

                                 break;

                         case HM_ENTITYTYPE_POINTS:

                                 break;

                         case HM_ENTITYTYPE_ASSEMS:

                                 break;

                         case HM_ENTITYTYPE_CURVES:

                                 break;

                         case HM_ENTITYTYPE_PLOTS:

                                 break;

                         case HM_ENTITYTYPE_BLOCKS:

                                 break;

                         case HM_ENTITYTYPE_TITLES:

                                 break;

                         case HM_ENTITYTYPE_SETS:

                                 break;

                         case HM_ENTITYTYPE_OUTPUTBLOCKS:

                                 break;

                         case HM_ENTITYTYPE_LOADSTEPS:

                                 break;

                         case HM_ENTITYTYPE_SENSORS:

                                 break;

                         case HM_ENTITYTYPE_DESIGNVARS:

                                 break;

                         case HM_ENTITYTYPE_BEAMSECTCOLS:

                                 break;

                         case HM_ENTITYTYPE_BEAMSECTS:

                                 break;

                         case HM_ENTITYTYPE_OPTITABLEENTRS:

                                 break;

                         case HM_ENTITYTYPE_OPTIFUNCTIONS:

                                 break;

                         case HM_ENTITYTYPE_OPTIRESPONSES:

                                 break;

                         case HM_ENTITYTYPE_DVPRELS:

                                 break;

                         case HM_ENTITYTYPE_OPTICONSTRAINTS:

                                 break;

                         case HM_ENTITYTYPE_DESVARLINKS:

                                 break;

                         case HM_ENTITYTYPE_OBJECTIVES:

                                 break;

                         case HM_ENTITYTYPE_CONTROLVOLS:

                                 break;

                         case HM_ENTITYTYPE_MULTIBODIES:

                                 break;

                         case HM_ENTITYTYPE_ELLIPSOIDS:

                                 break;

                         case HM_ENTITYTYPE_OPTICONTROLS:

                                 break;

                         case HM_ENTITYTYPE_OPTIDSCREENS:

                                 break;

                         case HM_ENTITYTYPE_TAG:

                                 break;

                         case HM_ENTITYTYPE_MBJOINT:

                                 break;

                         case HM_ENTITYTYPE_MBPLANE:

                                 break;

                         case HM_ENTITYTYPE_DOBJREFS:

                                 break;

                         case HM_ENTITYTYPE_CONTACTSURFS:

                                 break;

                         case HM_ENTITYTYPE_CONNECTORS:

                                 break;

                         case HM_ENTITYTYPE_SYMMETRYS:

                                 break;

                         case HM_ENTITYTYPE_HANDLES:

                                 break;

                         case HM_ENTITYTYPE_DOMAINS:

                                 break;

                         case HM_ENTITYTYPE_SHAPES:

                                 break;

                         case HM_ENTITYTYPE_SOLIDS:

                                 break;

                         case HM_ENTITYTYPE_MORPHCONSTRAINTS:

                                 break;

                         case HM_ENTITYTYPE_HYPERCUBES:

                                 break;

                         case HM_ENTITYTYPE_DDVALS:

                                 break;

                         case HM_ENTITYTYPE_BAGS:

                                 break;

                         case HM_ENTITYTYPE_MAX:

                                 break;

                 }

                 break;

         case HMIN_ENTITYCLOSEFUNCTION:

                 break;

         case HMIN_NAMEFUNCTION:

                 break;

         case HMIN_MOVEFUNCTION:

                 break;

         case HMIN_COLORFUNCTION:

                 break;

         case HMIN_ASSOCIATEFUNCTION:

                 break;

         case HMIN_CEDATAFUNCTION:

                 break;

         case HMIN_METADATAFUNCTION:

                 break;

         case HMIN_CLOSEFUNCTION:

                 break;

 }

 

 return(NULL);

}

 

int HM_getMaterials()

{

 /* This function writes each material data structure to HyperMesh.        */

 

 int i;

 

 //Write each material data structure to HyperMesh

 for (i=0; i<nummaterials; i++)

 {

         HMIN_material_write(material[i].id, material[i].name);

         HMIN_writeattribute_int(HM_ENTITYTYPE_MATS, material[i].id, 1, 0, 1, 1);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 2, 0, 1, material[i].E);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 3, 0, 1, material[i].G);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 4, 0, 1, material[i].NU);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 5, 0, 1, material[i].RHO);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 6, 0, 1, material[i].A);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 7, 0, 1, material[i].TREF);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 8, 0, 1, material[i].GE);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 9, 0, 1, material[i].ST);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 10, 0, 1, material[i].SC);

         HMIN_writeattribute_double(HM_ENTITYTYPE_MATS, material[i].id, 11, 0, 1, material[i].SS);

 }

 

 return(0);

}

 

 

See Also:

HyperMesh Entities & Solver Interfaces