⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 有限元分析源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	char        *name;	int	     kval;	} fe_objects[] = {            "ElementAttr",     ELMT_ATTR,            "SectionAttr",     SECT_ATTR,           "MaterialAttr",     MATL_ATTR,              "FiberAttr",     FIB_ATTR,           "SetUnitsType",     UNIT,                   "type",     TYPE,                "section",     SECTION,               "material",     MATERIAL,                  "fiber",     FIBER,                    "map",     MAP,                     "to",     TO,                   "ldof",     LDOF,                   "gdof",     GDOF,	       "LinkNode",     LINK_NODE,		"AddElmt",     ADD_ELMT,	};#define NO_OBJECTS (sizeof(fe_objects)/sizeof(fe_objects[0]))/* *  ------------------------------------------------ *  Adjustable Parameters for Finite Element Problem *  ------------------------------------------------ */static struct {	char        *name;	double 	    value;	} fe_parameters[] = {                "NDimension",  (double) UNIT_NDM,       	       "NDofPerNode",  (double) UNIT_NDF,        "MaxNodesPerElement",  (double) UNIT_NEN,           "InPlaneIntegPts",  (double) UNIT_IN_PLANE_INTEG_PTS,         "ThicknessIntegPts",  (double) UNIT_INTEG_PTS,             "GaussIntegPts",  (double) UNIT_INTEG_PTS,        };#define NO_PARAMETERS (sizeof(fe_parameters)/sizeof(fe_parameters[0]))/* ----------------- * Engineering Units * ----------------- */static DIMENSIONS eng_units[] = {/* LENGTH */         "micron",	   1E-6,  1,  0,  0, 0, SI,                     "mm",	   1E-3,  1,  0,  0, 0, SI,		     "cm",	   1E-2,  1,  0,  0, 0, SI,		     "dm",	   1E-1,  1,  0,  0, 0, SI,		      "m",	    1.0,  1,  0,  0, 0, SI,		     "km",	   1E+3,  1,  0,  0, 0, SI,/* MASS   */          "g",         1E-3,  0,  1,  0, 0, SI,                     "kg",	    1.0,  0,  1,  0, 0, SI,                     "Mg",         1E+6,  0,  1,  0, 0, SI,/* TIME   */         "sec",	    1.0,  0,  0,  1, 0, SI_US,                     "ms",	 0.0010,  0,  0,  1, 0, SI_US, /* micro sec */                    "min",         60.0,  0,  0,  1, 0, SI_US,                     "hr",       3600.0,  0,  0,  1, 0, SI_US, /* TEMPERATURE */ "deg_C",          1.0,  0,  0,  0, 1, SI,                  "DEG_C",          1.0,  0,  0,  0, 1, SI,   /* incr. temp. only *//* FREQUENCE   */    "Hz",          1.0,  0,  0, -1, 0, SI_US,/* SPEED       */   "rpm",     1.0/60.0,  0,  0, -1, 0, SI_US,  /* rev per min */                    "cps",          1.0,  0,  0, -1, 0, SI_US,  /* cycle per sec *//* FORCE       */     "N",          1.0,  1,  1, -2, 0, SI,		     "kN",         1E+3,  1,  1, -2, 0, SI,		     "kgf",     9.80665,  1,  1, -2, 0, SI,/* PRESSURE    */    "Pa",          1.0, -1,  1, -2, 0, SI,                    "kPa",         1E+3, -1,  1, -2, 0, SI,                    "MPa",         1E+6, -1,  1, -2, 0, SI,                    "GPa",         1E+9, -1,  1, -2, 0, SI,/* ENERGY      */   "Jou",          1.0,  2,  1, -2, 0, SI,                     "kJ",         1E+3,  2,  1, -2, 0, SI,/* POWER       */  "Watt",          1.0,  2,  1, -3, 0, SI,                     "kW",         1E+3,  2,  1, -3, 0, SI,/* LENGTH */         "in",	    1.0,  1,  0,  0, 0, US,		    "mil",	   1E-3,  1,  0,  0, 0, US,	       "micro_in",   	   1E-6,  1,  0,  0, 0, US,		     "ft",         12.0,  1,  0,  0, 0, US,		   "yard",         36.0,  1,  0,  0, 0, US,		   "mile",      63360.0,  1,  0,  0, 0, US,/* VOLUME */     "gallon",          1.0,  3,  0,  0, 0, US,                 "barrel",          1.0,  3,  0,  0, 0, US,/* MASS   */         "lb",          1.0,  0,  1,  0, 0, US,                  "grain",     1.0/7E+3,  0,  1,  0, 0, US,                    "ton",         2E+3,  0,  1,  0, 0, US,                    "klb",         1E+3,  0,  1,  0, 0, US,/* TEMPERATURE */ "deg_F",          1.0,  0,  0,  0, 1, US,                  "DEG_F",          1.0,  0,  0,  0, 1, US,/* incre. temp only *//* FORCE  */        "lbf",          1.0,  1,  1, -2, 0, US,                   "kips",         1E+3,  1,  1, -2, 0, US,/* PRESSURE */      "psi",          1.0, -1,  1, -2, 0, US,                    "ksi",         1E+3, -1,  1, -2, 0, US,/* PLANE ANGLE */   "deg",   0.01745329,  0,  0,  0, 0, SI_US,                    "rad",          1.0,  0,  0,  0, 0, SI_US,	};#define NO_UNITS (sizeof(eng_units)/sizeof(eng_units[0]))int UNITS_TYPE;Init_Problem(){int            i;SYMBOL        *s;int UNITS_SWITCH;	UNITS_SWITCH = CheckUnits();        UNITS_TYPE = SI;        /* Macro Language Keywords and Constants */	for (i = 0; i < NO_KEYWORDS; i++)		build_table(keywords[i].name,  keywords[i].kval, 0.0);	for (i = 0; i < NO_CONSTANTS; i++) {		s = build_table(consts[i].name, QUAN, 0.0);		s->u.q          = (QUANTITY *) MyCalloc(1,sizeof(QUANTITY));		s->u.q->value   = consts[i].cval;                if(UNITS_SWITCH==ON) {	           s->u.q->dimen   = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));	           ZeroUnits(s->u.q->dimen);                   s->u.q->dimen->units_type = SI_US;                }	}        /* Builtin Quantity Functions */	for (i = 0; i < NO_BUILTIN_QUANTITY; i++)  {		s = build_table(builtin_quantity[i].name, BLTIN_QUANTITY, 0.0);		s->u.quantityptr = builtin_quantity[i].func;	}	for (i = 0; i < NO_BUILTIN1_QUANTITY; i++)  {		s = build_table(builtin1_quantity[i].name, BLTIN1_QUANTITY, 0.0);		s->u.quantityptr = builtin1_quantity[i].func;	}        for (i = 0; i < NO_BUILTIN2_QUANTITY; i++)  {                s = build_table(builtin2_quantity[i].name, BLTIN2_QUANTITY, 0.0);                s->u.quantityptr = builtin2_quantity[i].func;        }	for (i = 0; i < NO_BUILTIN3_QUANTITY; i++)  {		s = build_table(builtin3_quantity[i].name, BLTIN3_QUANTITY, 0.0);		s->u.quantityptr = builtin3_quantity[i].func;	}        /* Builtin Matrix Functions */	for (i = 0; i < NO_BUILTIN_MATRIX; i++)  {		s = build_table(builtin_matrix[i].name, BLTIN_MATRIX, 0.0);		s->u.matrixptr = builtin_matrix[i].func;	}	for (i = 0; i < NO_BUILTIN1_MATRIX; i++)  {		s = build_table(builtin1_matrix[i].name, BLTIN1_MATRIX, 0.0);		s->u.matrixptr = builtin1_matrix[i].func;	}	for (i = 0; i < NO_BUILTIN2_MATRIX; i++)  {  	     s = build_table(builtin2_matrix[i].name, BLTIN2_MATRIX, 0.0);	     s->u.matrixptr = builtin2_matrix[i].func;	}	for (i = 0; i < NO_BUILTIN3_MATRIX; i++)  {  	     s = build_table(builtin3_matrix[i].name, BLTIN3_MATRIX, 0.0);	     s->u.matrixptr = builtin3_matrix[i].func;	}	for (i = 0; i < NO_BUILTINVar_MATRIX; i++)  {  	     s = build_table(builtinvar_matrix[i].name, BLTINVar_MATRIX, 0.0);	     s->u.matrixptr = builtinvar_matrix[i].func;	}        /* Engineering Units and Quantities */	for (i = 0; i < NO_UNITS; i++) {             if((eng_units[i].units_type != SI_US)        &&                (eng_units[i].units_type != SI)           &&                strcmp(eng_units[i].units_name, "deg_C")  &&                strcmp(eng_units[i].units_name, "deg_F"))                eng_units[i] = UnitsScaleConvert(eng_units[i], SI);		s = build_table(eng_units[i].units_name, DIMENSION, 0.0);		s->u.q =        (QUANTITY *) MyMalloc(sizeof(QUANTITY));		s->u.q->dimen = (DIMENSIONS *)    MyMalloc(sizeof(DIMENSIONS));		s->u.q->dimen->units_name   = eng_units[i].units_name;		s->u.q->dimen->units_type   = eng_units[i].units_type;		s->u.q->dimen->scale_factor = eng_units[i].scale_factor;		s->u.q->value               = eng_units[i].scale_factor;		s->u.q->dimen->length_expnt = eng_units[i].length_expnt;		s->u.q->dimen->mass_expnt   = eng_units[i].mass_expnt;		s->u.q->dimen->time_expnt   = eng_units[i].time_expnt;		s->u.q->dimen->temp_expnt   = eng_units[i].temp_expnt;	}        /* Finite Element Functions, Objects and Solution Procedures */	for (i = 0; i < NO_FE_MESH; i++) {		s = build_table(fe_mesh[i].name, MESH, 0.0);		s->u.voidptr = fe_mesh[i].func;	}	for (i = 0; i < NO_FE_NODE; i++) {		s = build_table(fe_node[i].name, NODE_QUANT, 0.0);		s->u.voidptr = fe_node[i].func;	}	for (i = 0; i < NO_FE_FUNCTION; i++) {		build_table(fe_function[i].name, fe_function[i].kval, 0.0);	}	for (i = 0; i < NO_OBJECTS; i++) {		build_table(fe_objects[i].name, fe_objects[i].kval, 0.0);	}        /* Load Adjustable Parameters for Size of Finite Element Problem */	for (i = 0; i < NO_PARAMETERS; i++) {	     s = build_table(fe_parameters[i].name, QUAN, 0.0);	     s->u.q =        (QUANTITY *) MyMalloc(sizeof(QUANTITY));	     s->u.q->value               = fe_parameters[i].value;             if(UNITS_SWITCH==ON) {	        s->u.q->dimen   = (DIMENSIONS *)MyMalloc(sizeof(DIMENSIONS));	        ZeroUnits(s->u.q->dimen);                s->u.q->dimen->units_type = SI_US;             }	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -