00001 #ifndef LINHEXROT_H
00002 #define LINHEXROT_H
00003
00004 #include "alias.h"
00005 struct matrix;
00006 struct vector;
00007 struct ivector;
00008
00009
00010
00011
00012
00013
00014
00015
00016 class linhexrot
00017 {
00018 public:
00019 linhexrot ();
00020 ~linhexrot ();
00021
00022 double approx (double xi,double eta,double zeta,vector &nodval);
00023 void tran_side (matrix &t12,matrix &t23,matrix &t34,matrix &t41, matrix &t15,matrix &t26,
00024 matrix &t37,matrix &t48, matrix &t56,matrix &t67,matrix &t78,matrix &t85, vector &x,vector &y,vector &z);
00025 void bf_matrix (matrix &n,double xi,double eta,double zeta);
00026 void geom_matrix (matrix &gm,vector &x,vector &y,vector &z,
00027 double xi,double eta,double zeta,double &jac);
00028 void geom_matrix_shear (matrix &gm,vector &x,vector &y,vector &z,
00029 double xi,double eta,double zeta,double &jac);
00030 void geom_matrix_block (matrix &gm,long ri,vector &x,vector &y,vector &z,
00031 double xi,double eta,double zeta,double &jac);
00032 void bvectors (vector &x,vector &y,vector &z,double xi,double eta,double zeta,double &jac,
00033 vector &b11,vector &b12,vector &b13,
00034 vector &b21,vector &b22,vector &b23,
00035 vector &b31,vector &b32,vector &b33);
00036 void gngeom_matrix (matrix &gm,vector &r,vector &x,vector &y,vector &z,double xi,double eta,double zeta,double &jac);
00037 void gnl_grmatrix (matrix &grm,vector &x,vector &y,vector &z,double xi,double eta,double zeta,double &jac);
00038
00039
00040 void dmatblock (matrix &dd,matrix &d);
00041 void transf_matrix (ivector &nodes,matrix &tmat);
00042
00043 void gl_stiffness_matrix (long eid,long ri,long ci,matrix &sm);
00044 void gnl_stiffness_matrix (long lcid,long eid,long ri,long ci,matrix &sm);
00045 void res_stiffness_matrix (long lcid,long eid,matrix &sm);
00046
00047 void res_mass_matrix (long eid,matrix &mm);
00048 void mass_matrix (long eid,matrix &mm);
00049 void load_matrix (long eid,matrix &lm);
00050 void res_load_matrix (long eid,matrix &lm);
00051
00052 void res_ip_strains (long lcid,long eid);
00053 void gl_ip_strains (long lcid,long eid,long ri,long ci,vector &x,vector &y,vector &z,vector &r);
00054 void gnl_ip_strains (long lcid,long eid,long ri,long ci,vector &x,vector &y,vector &z,vector &r);
00055 void nod_strains_ip (long lcid,long eid,long ri,long ci);
00056 void nod_strains_comp (long lcid,long eid,double **stra);
00057
00058
00059
00060
00061 void appstrain (long lcid,long eid,double xi,double eta,double zeta,long fi,long li,vector &eps);
00062 void strains (long lcid,long eid,long ri,long ci);
00063
00064 void nodecoord (vector &xi,vector &eta,vector &zeta);
00065 void nodipnum (long eid,long ri,long ci,ivector &ipnum);
00066
00067
00068 void res_ip_stresses (long lcid,long eid);
00069 void ip_stresses (long lcid,long eid,long ri,long ci);
00070 void ip_elast_stresses (long lcid,long eid,long ri,long ci);
00071 void nod_stresses_ip (long lcid,long eid,long ri,long ci);
00072 void elem_stresses (double **stra,double **stre,long lcid,long eid,long ri,long ci);
00073 void appstress (long lcid,long eid,double xi,double eta,double zeta,long fi,long li,vector &sig);
00074 void stresses (long lcid,long eid,long ri,long ci);
00075
00076 void nod_others (long lcid,long eid,long ri,long ci);
00077 void nod_eqother_ip (long lcid,long eid,long ri,long ci);
00078
00079
00080 void gl_internal_forces (long lcid,long eid,long ri,long ci,vector &ifor,vector &x,vector &y,vector &z);
00081 void gnl_internal_forces (long lcid,long eid,long ri,long ci,vector &ifor);
00082 void nonloc_internal_forces (long lcid,long eid,long ri,long ci,vector &ifor,vector &x,vector &y,vector &z);
00083 void incr_internal_forces (long lcid,long eid,long ri,long ci,vector &ifor,vector &x,vector &y,vector &z);
00084 void eigstrain_forces (long lcid,long eid,long ri,long ci,vector &nfor,vector &x,vector &y,vector &z);
00085
00086 void res_internal_forces (long lcid,long eid,vector &ifor);
00087 void res_nonloc_internal_forces (long lcid,long eid,vector &ifor);
00088 void res_incr_internal_forces (long lcid,long eid,vector &ifor);
00089 void res_eigstrain_forces (long lcid,long eid,vector &nfor);
00090
00091 void compute_nlstress (long lcid,long eid,long ri,long ci);
00092 void compute_nlstressincr (long lcid,long eid,long ri,long ci);
00093 void local_values (long lcid,long eid,long ri,long ci);
00094 void compute_nonloc_nlstress (long lcid,long eid,long ri,long ci);
00095 void compute_eigstress (long lcid,long eid,long ri,long ci);
00096 void elem_integration (integratedquant iq,long lcid,long eid,long ri,long ci,vector &nv,vector &x,vector &y,vector &z);
00097
00098 void ipcoord (long eid,long ipp,long ri,long ci,vector &coord);
00099 void inicipval(long eid, long ri, long ci, matrix &nodval, inictype *ictn);
00100 void ipvolume (long eid,long ri,long ci);
00101
00102 void locglob_nodeval (long is,vector &nv,double *tnv,vector &x,vector &y,vector &z);
00103 void node_forces_surf (long lcid,long eid,long *is,double *nv,vector &nf);
00104 void node_forces_surf_old (long lcid,long eid,long *is,double *nv,vector &nf);
00105 void tran_mat(matrix &tran, vector &gx, vector &gy, vector &gz, long is);
00106
00107
00108 void intpointval (long eid,vector &nodval,vector &ipval);
00109
00110 void aver_strains (long lcid,long eid,long ri,long ci,vector &averstra,double &volume);
00111
00112
00113 void surfnodeval (long surf,vector &nodval,double *list);
00114
00115
00116
00117
00118 long ndofe;
00119
00120 long nne;
00121
00122 long tncomp;
00123
00124 long tnip;
00125
00126 long napfun;
00127
00128 long ned;
00129
00130 long nned;
00131
00132 long nsurf;
00133
00134 long nnsurf;
00135
00136 long **intordsm;
00137
00138 long intordmm;
00139
00140 long intordb;
00141
00142 long **nip;
00143
00144 long nb;
00145
00146 long *ncomp;
00147
00148 long *cncomp;
00149
00150 strastrestate ssst;
00151
00152 };
00153
00154 #endif