亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ttfem.cpp

?? 一個簡單的三角形單元有限元計算程序,是標準的C++源程序
?? CPP
字號:
////////////  常應變三角形單元解彈性力學平面問題的有限元程序  //////////////////
//                                                                            //
//      File name:	ttfem.cpp                                             // 
//      Compiler:	Turbo C 2.0                                           //
//      Author:		LiuH                                                  // 
//      Date:		2004-5-4                                              //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////  INCLUDE  /////////////////////////////////////

#include "elem.h"
#include "matrix.h"

#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;

////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////

extern inline void error(char* v);       // 輔助函數

void readData(Node*&, Elem*&, Mtx<double>*&);     //讀取數據并生成整體剛度矩陣 
void solveEq(Node*&, Mtx<double>*&);              //解方程子程序
void stress(Elem*&);                              //求應力子程序
void output(Node*&, Elem*&);                      //輸出位移及應力子程序  

////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////

int main()
{
	Node* nptr = 0; //節點指針 
	Elem* eptr = 0; //單元指針 
	Mtx<double>* kptr = 0;               //整體剛度矩陣指針,初始值為0 	
	
	readData(nptr, eptr, kptr);//讀取節點數、單元數及常量Mu, E, t 
	solveEq(nptr, kptr);
	stress(eptr);
 	output(nptr, eptr); 
 	
  	delete[] nptr;
 	delete[] eptr;
 	delete kptr;
 	
 	cout << "\n  ...program ended.\n\n\n\n";
  	system("pause");
 	return 0;
}

///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////

void readData(Node*& ndp, Elem*& elp, Mtx<double>*& kp)
{
	char fname[20];
  	cout << "Please input the name of data file: ";
  	cin >> fname;
  	  	
  	ifstream infile;
   	infile.open(fname, ios_base::in);
   	if(!infile)
   	{	
   		cout << fname << ": Can not open this file" << endl;
   		error("  ");
 	}
 	
   	double dtmp1, dtmp2, dtmp3;     //定義輔助變量 
	int itmp1, itmp2, itmp3, itmp4;  	
	infile >> dtmp1 >> dtmp2 >> dtmp3;
 	infile >> itmp1 >> itmp2 >> itmp3;
	Elem::setStatics(dtmp1, dtmp2, dtmp3, itmp1, itmp2, itmp3); 

	const int nNum = Elem::getNdTN();
 	const int eNum = Elem::getElTN();
	
	ndp = new Node[nNum];                  //定義節點數組 
	elp = new Elem[eNum];                  //定義單元數組 
	kp = new Mtx<double>(2*nNum, 2*nNum);  //定義整體剛度矩陣 
  	
   	int count;   	
   	infile >> count;        //檢查結束標志-1
	if(count != -1) error("wrong constants number");
        
	// 讀取節點數據 
 	count = 0;            
	while(1)
	{
   		infile >> itmp1;   		
   		if(itmp1 == -1) break;
   		
		if(itmp1 < 0 || itmp1 >= nNum)        ////檢查讀入數據的合法性 
		{
			cout << itmp1;
			error(": wrong node number");
		}   		
		infile >> dtmp2 >> dtmp3;
     	
		ndp[itmp1].setPoint(itmp1, dtmp2, dtmp3);
		count++;  		
	}
	if(count != nNum) error("wrong nodes number");
   
	//讀取單元數據 
	count = 0;    
	while(1)
	{
		infile >> itmp1;
		if(itmp1 == -1) break;
    	
		if(itmp1 < 0 || itmp1 >= eNum)      //檢查讀入數據的合法性 
  		{
  			cout << itmp1;
  			error(": wrong Elem number");
   		}   
		infile >> itmp2 >> itmp3 >> itmp4;
		if(itmp2 < 0 || itmp2 >= nNum || itmp2 < 0 || itmp2 >= nNum
		   || itmp2 < 0 || itmp2 >= nNum)
  		{
			cout << "wrong Node number for Elem " << itmp1;
  			error(" ");
   		}   
    	
		elp[itmp1].setElem(itmp1, &ndp[itmp2], &ndp[itmp3], &ndp[itmp4]);
		count++;
   	}
   	if(count != eNum) error("wrong elems number");
  	
   	//生成整體剛度矩陣 
	for(int i = 0; i < eNum; i ++)
   		elp[i].setMtxk(*kp);
   	
   	//讀入節點等效荷載
   	while(1)
   	{
   		infile >> itmp1;
		if(itmp1 == -1) break;
     
		if(itmp1 < 0 || itmp1 >= nNum)      //檢查讀入數據的合法性 
		{
			cout << itmp1;
			error(": wrong Node number");
		}
        
		infile >> dtmp2 >> dtmp3;
		ndp[itmp1].setLoad(dtmp2, dtmp3);        	
	}
         
	//讀取支撐條件,并對整體剛度矩陣做相應的改動 
	const double BigNum = 1000000000;  //設置一個大系數 
	
	while(1)                           //讀取x方向支撐條件 
   	{
   		infile >> itmp1;
		if(itmp1 == -1) break;
     
		if(itmp1 < 0 || itmp1 >= nNum)      //檢查讀入數據的合法性 
		{
			cout << itmp1;
			error(": wrong Node number");
		}
        
		infile >> dtmp2; 
		if(dtmp2 == 0)                  //水平位移為0 
  		{
  			ndp[itmp1].setLoadX(0);
			for(int i = 0; i < 2*nNum; i++)
			{
				if(i == 2*itmp1)
					(*kp)(i, 2*itmp1) = 1;
   		 		else
				{
 					(*kp)(i, 2*itmp1) = 0;
  					(*kp)(2*itmp1, i) = 0;
				}
			}
		}
		else                            //水平位移不為0  
		{
			(*kp)(2*itmp1, 2*itmp1) *= BigNum;
   			ndp[itmp1].setLoadX((*kp)(2*itmp1, 2*itmp1)*dtmp2); 
		}	
   	}
   	
   	while(1)                                //讀取y方向支撐條件 
   	{
   		infile >> itmp1;
		if(itmp1 == -1) break;
     
		if(itmp1 < 0 || itmp1 >= nNum)      //檢查讀入數據的合法性 
		{
			cout << itmp1;
			error(": wrong Node number");
		}
        
		infile >> dtmp3;
		        	
		if(dtmp3 == 0)                  //垂直位移為0 
		{
			ndp[itmp1].setLoadY(0);
			for(int i = 0; i < 2*nNum; i++)
			{
				if(i == 2*itmp1 + 1)
					(*kp)(i, 2*itmp1 +1) = 1;
				else
   				{
   					(*kp)(i, 2*itmp1 +1) = 0;
   					(*kp)(2*itmp1 +1, i) = 0;
   				}
			}
		}
		else                            //垂直位移不為0 
		{
			(*kp)(2*itmp1 +1, 2*itmp1 +1) *= BigNum;
			ndp[itmp1].setLoadY((*kp)(2*itmp1 +1, 2*itmp1 +1)*dtmp3);
		}
   	}
   	   	
	infile.close();
}

void solveEq(Node*& ndp, Mtx<double>*& aa)
{
	const int nNum = Elem::getNdTN();
	const int eNum = Elem::getElTN();
	const int tnNum = 2*nNum;
 		
	double* bb = new double[tnNum];
	double* xx = new double[tnNum];
 	for(int i = 0; i < nNum; i++)
  	{
  		bb[2*i] = ndp[i].getLoadX();
  		bb[2*i +1] = ndp[i].getLoadY();
   	} 
   	
   	//for(int i = 0; i < tnNum; i++)   //輔助調試 
   	//	cout << bb[i] << "\t";
 	//cout << endl;
     	
	for(int k = 0; k < tnNum -1; k++)                  //高斯消元法消元 
	{
     		double aet = abs((*aa)(k, k));             //挑選主元素 
     		int pc = k;                 
     		for(int i = k + 1; i < tnNum; i++)
     		{
     			if(abs((*aa)(i, k)) > aet)
        		{
        			aet = abs((*aa)(i, k));
        			pc = i;
          		}	
     		}
     		if(!aet)
     			error("pivot is zero in solveEq()");
     			
		if(pc != k)                                //交換行 
		{
			double tmp;
			for(int i = 0; i < tnNum; i++)
			{
				tmp = (*aa)(k, i);
				(*aa)(k, i) = (*aa)(pc, i);
				(*aa)(pc, i) = tmp;
			}
			tmp = bb[k];
			bb[k] = bb[pc];
			bb[pc] = tmp;
		}
		
		for(int i = k + 1; i < tnNum; i++)
		{
			(*aa)(i, k) /= (*aa)(k, k);
			bb[i] -= (*aa)(i, k)*bb[k];
  			for(int j = k +1; j < tnNum; j++)
     				(*aa)(i, j) -= (*aa)(i, k)*(*aa)(k, j);
          	}	
	}
	
	for(int i = tnNum - 1; i >= 0; i--)                //回代求解 
	{
		double tmp = 0;
		for(int j = i + 1; j < tnNum; j++)
			bb[i] -= (*aa)(i, j)*xx[j];
		xx[i] = bb[i]/(*aa)(i, i);
	}
	
	for(int i = 0; i < nNum; i++)
  	{
  		 ndp[i].setUx(xx[2*i]);
  		 ndp[i].setVy(xx[2*i +1]);
   	} 
   	
   	//for(int i = 0; i < tnNum; i++)   //輔助調試 
   	//	cout << xx[i] << "\t";
 	//cout << endl;
}

void stress(Elem*& clp)                              //求應力子程序
{
	const int eNum = Elem::getElTN();
	for(int i = 0; i < eNum; i++)
		clp[i].setStress();
}

void output(Node*& ndp, Elem*& elp)                      //輸出位移及應力子程序  
{
	char fname[20];
  	cout << "\nPlease input the name of output data file: ";
  	cin >> fname;
  	  	
  	ofstream outfile;
   	outfile.open(fname, ios_base::out);
   	if(!outfile)
   	{	
   		cout << fname << ": Can not open this file" << endl;
   		error("  ");
 	}
 	
 	const int nNum = Elem::getNdTN();
 	const int eNum = Elem::getElTN();
 	
 	cout << endl;
 	outfile << endl;
 	for(int i = 0; i < nNum; i++)
 	{
 		outfile << ndp[i];
 		cout << ndp[i];
 	}
 	
 	cout << endl; 
  	outfile << endl;	
 	for(int i = 0; i < eNum; i++)
 	{
 		outfile << elp[i];
 		cout << elp[i];
 	}
 	
 	cout << "\n  ...output successfully.\n";
 	outfile.close();
}

///////////////////////////  END  /////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
972aa.com艺术欧美| 日韩欧美在线一区二区三区| 在线观看日韩一区| 日韩免费观看2025年上映的电影| 国产精品美女www爽爽爽| 日本在线不卡一区| 欧洲一区二区三区免费视频| 精品精品欲导航| 香蕉久久一区二区不卡无毒影院| 懂色av一区二区三区免费看| 在线播放中文一区| 一区二区三区免费网站| 国产精品18久久久| 日韩午夜激情av| 亚洲精品成人少妇| av网站免费线看精品| 久久久精品人体av艺术| 人人精品人人爱| 欧美区视频在线观看| 亚洲欧美日韩综合aⅴ视频| 国产一区二区三区观看| 日韩一区二区三区视频在线| 亚洲一级二级三级在线免费观看| 91污在线观看| 亚洲欧美自拍偷拍色图| 懂色av噜噜一区二区三区av| 精品日韩在线观看| 久久电影国产免费久久电影| 在线播放亚洲一区| 日本va欧美va欧美va精品| 欧美日韩国产高清一区二区 | 亚洲三级电影网站| 成人一区二区三区视频在线观看 | 久久久国产午夜精品| 久久国产视频网| 欧美va亚洲va香蕉在线| 精品一区二区三区在线观看| 欧美一区二区国产| 久久精品久久精品| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 在线免费一区三区| 国产成人鲁色资源国产91色综 | 成人sese在线| 亚洲视频小说图片| 在线欧美日韩精品| 视频一区欧美日韩| 日韩一级黄色片| 国产精品一区二区三区网站| 国产农村妇女精品| 色香蕉久久蜜桃| 亚洲高清久久久| 日韩手机在线导航| 国产精品原创巨作av| 中文字幕免费观看一区| 色婷婷一区二区三区四区| 亚洲午夜在线电影| 欧美一级欧美三级| 成人在线视频首页| 亚洲综合久久久| 欧美第一区第二区| 豆国产96在线|亚洲| 一区二区三区加勒比av| 欧美videossexotv100| 成人成人成人在线视频| 午夜一区二区三区视频| 欧美大片免费久久精品三p| 国产91在线观看| 视频一区视频二区中文| 久久综合一区二区| 在线观看三级视频欧美| 加勒比av一区二区| 亚洲欧美成aⅴ人在线观看| 91精品国产综合久久精品麻豆| 国产精选一区二区三区| 亚洲最新在线观看| 久久久www成人免费毛片麻豆| 91麻豆免费在线观看| 蜜桃av一区二区三区| 最新成人av在线| 日韩精品影音先锋| 欧美影院一区二区| 成人性生交大片免费看中文网站| 亚洲国产sm捆绑调教视频| 国产视频在线观看一区二区三区| 欧美色精品天天在线观看视频| 国产精品66部| 久久99国内精品| 亚洲在线视频网站| 国产精品蜜臀av| 欧美一区二区三区四区五区 | 亚洲永久精品国产| 国产日韩av一区| 欧美一区二区三区成人| 色八戒一区二区三区| 成人精品亚洲人成在线| 激情五月婷婷综合网| 水野朝阳av一区二区三区| 亚洲啪啪综合av一区二区三区| 久久精品水蜜桃av综合天堂| 91精品国产综合久久精品性色| 欧美影院精品一区| 91欧美激情一区二区三区成人| 国产成人在线视频免费播放| 久久精品99久久久| 美女脱光内衣内裤视频久久网站| 一区二区三区精品久久久| 亚洲欧美日韩在线不卡| 国产精品久久久久久久浪潮网站| 久久久精品tv| 久久免费看少妇高潮| 精品国产91洋老外米糕| 日韩欧美视频一区| 91精品国产综合久久久久久久久久 | 一区二区三区精品视频| 亚洲人成精品久久久久| 国产精品久久久一本精品| 久久蜜桃av一区精品变态类天堂| 日韩久久久精品| 日韩美女一区二区三区四区| 欧美成人午夜电影| 2017欧美狠狠色| 国产日韩精品一区二区三区| 亚洲国产精品精华液ab| 国产精品久久久一本精品| **网站欧美大片在线观看| 亚洲四区在线观看| 亚洲精品高清视频在线观看| 一区二区三区日韩| 日韩和欧美一区二区| 蜜桃视频在线一区| 国产乱色国产精品免费视频| 韩国中文字幕2020精品| 国产精品一区在线| 91网站在线播放| 欧美日韩在线观看一区二区 | 91精品国产综合久久精品麻豆| 日韩女优电影在线观看| 国产肉丝袜一区二区| 国产精品久久精品日日| 亚洲综合免费观看高清完整版在线 | 日本精品一级二级| 欧美精品乱人伦久久久久久| 日韩网站在线看片你懂的| 久久青草欧美一区二区三区| **欧美大码日韩| 免费成人你懂的| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 91影院在线免费观看| 欧美日韩一级二级三级| 久久婷婷国产综合国色天香| 中文字幕一区二区三中文字幕| 亚洲永久免费视频| 国产乱一区二区| 在线观看国产91| 久久久午夜精品理论片中文字幕| 国产精品国产三级国产普通话三级 | 极品瑜伽女神91| 欧美吞精做爰啪啪高潮| 久久嫩草精品久久久精品| 一区二区三区免费网站| 国产麻豆成人精品| 欧美日韩亚洲综合| 中文字幕 久热精品 视频在线 | 欧美色图12p| 日本一区二区三区国色天香| 亚洲成人免费电影| 99久久久国产精品免费蜜臀| 91精品国产全国免费观看| 自拍偷拍国产精品| 国产一区免费电影| 91精品国产综合久久香蕉麻豆| 国产精品久久夜| 国产麻豆日韩欧美久久| 在线播放中文一区| 亚洲精品高清视频在线观看| 国产精品18久久久久久久网站| 色8久久人人97超碰香蕉987| 亚洲精品在线观看网站| 亚洲高清免费观看高清完整版在线观看 | 国产91高潮流白浆在线麻豆| 337p亚洲精品色噜噜狠狠| 最新久久zyz资源站| 国产精一品亚洲二区在线视频| 欧美一区二区福利视频| 一区二区三区国产精品| 91免费精品国自产拍在线不卡| 国产视频一区二区在线| 奇米影视7777精品一区二区| 欧美性做爰猛烈叫床潮| 亚洲黄色av一区| 色婷婷av一区二区三区之一色屋| 欧美高清在线精品一区| 国产成人午夜视频| 国产视频亚洲色图| 国产精品123区| 亚洲国产成人在线| 大尺度一区二区| 椎名由奈av一区二区三区| av不卡一区二区三区| 国产精品久久久久精k8|