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

📄 solve.h

📁 这是等参单元的有限元程序
💻 H
字号:
//////////////////////////////////////////////////////////////
// 
//    solve 是求解有限元平衡方程KV=P的函数       
//   
//    jd—是存储总体刚度矩阵主对角元在一维存储ZK数组的地址的数组
//	  zk—是一维存储的刚度矩阵,zk[0]不用来存储,赋值为零
//	Load—是存储节点等效荷载的数组,长度为NF+1,Load[0]不用来存储,值为零
//	  NF—结构的总体自由度数
    
//////////////////////////////////////////////////////////////
#ifndef __SOLVE_
#define __SOLVE_
#include <math.h>
void Solve(int *jd,double *zk,double *Load,int NF);

void Solve(int *jd,double *zk,double *Load,int NF)

{  int    I,L,MI,LI,J,M,LJ,J2,MJ,IJ,K,J1,II,I1;
   double Z;
     for(I=1;I<=NF;I++)
	 {     L=jd[I]; 
	        if(I==1)
				MI=I+1-L;
			   else   MI=jd[I-1]+I+1-L;
           LI=L-I;
           for(J=MI;J<=I;J++)
		   {    M=jd[J];
		        LJ=LI+J;
				 J2=J-1;
                 if(J==1)
					 MJ=J+1-M;
				   else  MJ=jd[J2]+J+1-M;
                IJ=MJ; 
				if(MJ<MI) 
					IJ=MI; 
				Z=0.0;
				J1=M-J;
               if(IJ<=J2)
				   for(K=IJ;K<=J2;K++)
					   Z+=zk[K+LI]*zk[K+J1];
               Z=zk[LJ]-Z;
               if(I==J)  
				   zk[LJ]=sqrt(fabs(Z));
			        else   zk[LJ]=Z/zk[M];
		   }
           Z=0.0;
		   J1=I-1;
		   if(MI<=J1)
			   for(K=MI;K<=J1;K++)
				   Z+=zk[LI+K]*Load[K];
          Load[I]=(Load[I]-Z)/zk[L];      
	 }
     for(II=1;II<=NF;II++)
	 {   I=NF-II+1;
	     L=jd[I];
		 LI=L-I;
         if(I==1) 
			 MI=1;
		     else    MI=jd[I-1]-LI+1;
         Z=Load[I]/zk[L]; 
		 Load[I]=Z; 
		 I1=I-1;
         if(MI>I1) break;
		     else 
				 for(J=MI;J<=I1;J++)
                     Load[J]-=zk[LI+J]*Z;
	 }
}
#endif

⌨️ 快捷键说明

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