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

📄 elmt_dummy.c

📁 有限元分析源代码
💻 C
字号:
/* *  =============================================================================  *  ALADDIN Version 1.0 : *       elmt_dummy.c : Skeleton code for "dummy" finite element. *                                                                      *  Copyright (C) 1995 by Mark Austin, Xiaoguang Chen, and Wane-Jang Lin *  Institute for Systems Research,                                            *  University of Maryland, College Park, MD 20742                                    *                                                                      *  This software is provided "as is" without express or implied warranty. *  Permission is granted to use this software for any on any computer system *  and to redistribute it freely, subject to the following restrictions: *  *  1. The authors are not responsible for the consequences of use of *     this software, even if they arise from defects in the software. *  2. The origin of this software must not be misrepresented, either *     by explicit claim or by omission. *  3. Altered versions must be plainly marked as such, and must not *     be misrepresented as being the original software. *  4. This notice is to remain intact. *                                                                     *  Written by: Mark Austin, Xiaoguang Chen, and Wane-Jang Lin      December 1995 *  =============================================================================  */#include <math.h>#include "defs.h"#include "units.h"#include "matrix.h"#include "fe_database.h"#include "symbol.h"#include "fe_functions.h"#include "elmt.h"/* #define DEBUG *//*  ======================================================================= *  Main function for finite element matrix formulation. * *  The variable "isw" controls the purpose of the function call, *  with the various cases being as follows:  * *      case PROPTY:        Compute finite element material and section *                          properties. *      case CHERROR:       Check for errors (often this section is blank). *      case STRESS_LOAD: *      case STRESS_UPDATE: *      case PRESSLD: *      case LOAD_MATRIX:   Compute equivalent nodal load forces. *      case STRESS:        Compute and print element stresses. *      case STIFF:         Form finite element stiffness matrix. *      case MASS_MATRIX:   Form finite element mass matrix. * *  ======================================================================= * *  Material Properties: * *        p->work_material[0] = E; *        p->work_material[1] = G; *        p->work_material[2] = fy; *        p->work_material[3] = ET; *        p->work_material[4] = nu; *        p->work_material[5] = density; *        p->work_material[6] = fu; * *  Section Properties: * *        p->work_section[0] = Ixx; *        p->work_section[1] = Iyy; *        p->work_section[2] = Izz; *        p->work_section[3] = Ixy; *        p->work_section[4] = Ixz; *        p->work_section[5] = Iyz; *        p->work_section[6] = weight; *        p->work_section[7] = bf; *        p->work_section[8] = tf; *        p->work_section[9] = depth;                                   *        p->work_section[10] = area; *        p->work_section[11] = plate_thickness; *        p->work_section[12] = J; *        p->work_section[13] = rT; *        p->work_section[14] = width; *        p->work_section[15] = tw;                                  * *  ======================================================================= */#ifdef __STDC__ARRAY *elmt_frame_2d(ARRAY *p, int isw)#elseARRAY *elmt_frame_2d(p, isw)ARRAY *p;int     isw;#endif{    UNITS_SWITCH = CheckUnits();    switch(isw) {        case PROPTY:             printf("Assign material properties\n");             printf("Assign section  properties\n");             break;        case CHERROR:             break;        case STRESS_LOAD:             break;        case STRESS_UPDATE:             break;	case PRESSLD:             break;	case LOAD_MATRIX:        case STRESS:             printf("Compute and print element level nodal forces and/or stresses\n");             break;        case STIFF:              printf("Form finite element stiffness matrix\n");             break;        case MASS_MATRIX:             printf("Form finite element mass matrix\n");             break;        default:             break;    }    return(p);}/*  *  ==================================================================== *  Form Finite Element Stiffness Matrix *  *  Typical Input/Output Parameters :  *  *  Input  : ARRAY  *p     = p array for transferring properties. *         : MATRIX *s     = stiffness matrix. *         : double EA     = Young's modulus times Area. *         : double EI     = Flexural stiffness *         : double length = length of element. *         : double cs     = cos() of element orientation. *         : double sn     = sin() of element orientation. *         : double size_of_stiff = size of stiffness matrix. *         : double n_dof         = no degrees of freedom. *  Output : MATRIX *s     = stiffness matrix. *  ==================================================================== */#ifdef __STDC__MATRIX *beamst(ARRAY *p, MATRIX *s, double EA, double EI, double length,               double cs, double sn, int size_of_stiff, int no_dof)#elseMATRIX *beamst(p, s, EA, EI, length, cs, sn, size_of_stiff, no_dof)ARRAY  *p;MATRIX *s;double  EA, EI, length, cs, sn;int     size_of_stiff, no_dof ;#endif{    /* [a] : Use material/section properties to form elements of stiffness matrix */    /* [b] : Add to stiffness matrix computation */    /* [c] : Rotate local coordinates to global coordinate frame */    return(s);}/*  *  ==================================================================== *  Form Finite Element Mass Matrix *  *  Typical Input/Output Parameters :  *  *  Input  : ARRAY  *p     = p array for transferring properties. *         : MATRIX *s     = stiffness matrix. *         : double mtype  = mass matrix type (CONSISTENT/LUMPED). *         : double mass   = mass per unit length. *         : double xl     = element length. *         : double cs     = cos() of element orientation. *         : double sn     = sin() of element orientation. *         : double nst    = size of stiffness matrix. *         : double ndf    = no degrees of freedom. *  Output : MATRIX *s     = mass matrix. *  ==================================================================== */#ifdef __STDC__MATRIX *beamms(ARRAY *p, MATRIX *s, int mtype, double mass, double xl,              double cs, double sn,   int nst, int ndf )#elseMATRIX *beamms(p, s, mtype, mass, xl, cs, sn, nst, ndf)ARRAY  *p;MATRIX *s;double mass, xl, cs, sn;  /* mass, length, cosine, ans sine */int nst, ndf,   mtype;#endif{    /* [a] : Form lumped/consistent mass matrices */    switch (mtype) {	case LUMPED:	     break;	case CONSISTENT:	     break;	default:             FatalError("In elmt_frame2d() : beamms() : Type of Mass Matrix Undefined",                       (char*) NULL);	     break;    }    /* [b] : Assign Units to mass matrix */    /* [c] : Rotate mass matrix */    return(s);}/*  *  =========================================================== *  Rotate element from local coordinates to global coordinates                *   *  Input  : double **s = pointer to mass/stiffness matrix. *         : double cs  = cos() of element orientation. *         : double sn  = sin() of element orientation. *         : double nst = size of stiffness matrix. *         : double ndf = no degrees of freedom. *  Output : double **s = pointer to mass/stiffness matrix. *  =========================================================== */ #ifdef __STDC__double **rotate(double **s, double cs, double sn, int nst, int ndf)#elsedouble **rotate(s, cs, sn, nst, ndf)double **s;int  nst, ndf;double cs, sn;#endif{}/*  *  =================================================== *  Equivalent Loading Procedure for 2 D frame element  *  *  Input :  *  Output:  *  =================================================== */ #ifdef __STDC__ARRAY *sld07(ARRAY *p, int task)#elseARRAY *sld07(p,task)ARRAY *p;int task;#endif{    /* [a] : Initialize total load */    /* [b] : Form load matrix for different loading types */    switch(task){       case PRESSLD:       case STRESS:            break;       case STRESS_LOAD:            break;       default:            break;    }    /* [c] : Rotate local forces to global forces */     return(p);}

⌨️ 快捷键说明

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