Bài tập tin học ứng dụng

Trong các bài toán nhiệt môi chất đợc sử dụng khá nhiều là R12. Do vậy việc tra cứu các thông số của R12 là một quá trình thường xuyên được sử dụng khi giải các bài toán liên quan tới nó. Việc có một chơng trinh tra cứu các thông số hơi R12 sẽ đem lại sự thuận tiện và hữu ích cho ngươi sử dụng để giải toán. Trong chơng trình này ta mới dừng lại ở việc tra cứu các thông số của hơi bão hoà ẩm theo thông số nhiệt độ t(oc) hay áp suấp p(bar) và độ khô x. b.Bài toán Tra cứu thông số của hơi bão hào ẩm theo thông số t(oc)hay p(bar) và độ khô x. Trong đó các thông số cần phải tìm là thể tích riêng v(m3/kg), entanpi i(kj/kg), entropi s(kj/kg.k) ,nội năng u(kj/kg). Trên thực tế đây là một bài toán nhiệt đơn giản, cả về mặt lập trình C lẫn lý thuyết nhiệt. Ta chú ý cac công thức sau: s=s+x(s-s) i=i+x(i-i) v=v+x(v-v) u=i-p.v Các giá trị s,s,i,i,v,v được tra từ bảng. Chúng ta chỉ cần có một bảng số liệu và đưa chúng vào chương trình sau đó dựa vào thông số đưa vào và một số công thức nhiệt để tra cứu. Từ đó ta có thể hoàn thiện một chơng trình tính nhiệt cơ bản của một môi chất đã chọn. Về thuật giải bài toán này là khá đơn giản, vì vậy mà ta không trình bày ở đây. Chúng ta có thể tìm hiểu chúng luôn thông qua nội dung bài giải sau. c.Nội dung bài giải: Chú ý rằng nhiệt độ là số nguyên : t=-80;-79;-78;,,,,,,,,;78;79;80. nên ta không cần nhập vào.

doc32 trang | Chia sẻ: oanh_nt | Lượt xem: 1479 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài tập tin học ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TIN HọC ứNG DụNG Bài tập + Phần 1: Tập hợp các chương trình đã thức hiện trên lớp về các nội dung: vào/ra dữ liệu, xử lý mảng, con trỏ, hàm. + Phần 2: Lập chương trình tính các thông số nhiệt động của môi chật nhiệt. - Lựa chọn một loại môi chất - Xây dựng các quan hệ giữa các thông số nhiệt động. + Phần 3: Lập chương trình giải một bài toán nhiệt(tính toán chu trình nhiệt hoặc thiết bị nhiệt). Ví dụ một số bài toán sau: - Tính nhiệt thiết bị trao đổi nhiệt - Tính nhiệt thiết bị sấy - Tính nhiệt chu trình máy lạnh nén hơi 1 cấp - Tính toán cân bằng nhiệt và cân bằng vật chất cháy lò hơi - Tính nhiệt tầng Tua bin hơi nước - Tính nhiệt chu trình Tua bin khí - Tính nhiệt chu trình Tua bin hơi nước. - ... Thực hiện 1. Phần 1:Tóm tắt lý thuyết của ngôn ngữ lập trình C a.Vào ra dữ liệu Hiển thị dữ liệu ra màn hình: printf(); Cú pháp: printf(,[danh sách đối]); VD: Hiển thị giá trị x=20 ra màn hình int x; x=20; printf("Gia tri cua x la:%d",x); Vào dữ liệu từ bàn phím scanf(); Cú pháp: scanf(,{danh sách đối}); VD: Nhập giá trị thực x từ bàn phím. float x; printf("Vao gia tri cua x:"); scanf("%f",&x); b.Xử lý mảng Khai báo mảng: Cú pháp: tênmảng[kích thước]; VD: int x[10]; -> có nghĩa là mảng x có nhiều nhất 10 phần tử nguyên Truy cập các phần tử mảng Cú pháp: tênmảng[chỉ số] VD: Ta có mảng nguyên x có nhiều nhất 10 phần tử, ta muốn truy cập vào phần tử thứ 5 của nó để gán giá trị cho 1 biến y khác, ta làm như sau: int x[10],y; y=x[4];s Nhập dữ liệu cho mảng Cú pháp:- Sử dụng vòng lặp for - Sử dụng biến trung gian để nhập dữ liệu VD: Vào dữ liệu cho mảng nguyên x có 10 phần tử: int x[10],y,i,n; n=10; for(i=0;i<n;i++) { printf("x[%d]=",i+1); scanf("%d",&y); x[i]=y; } Hiển thị dữ liệu mảng Cú pháp:-Sử dụng vòng lặp for, mỗi vòng lặp sẽ cho ta 1 giá trị của mảng. VD: Hiển thị giá trị của mảng x nguyên vừa nhập ở trên int x[10],i,n; n=10; for(i=0;i<n;i++) printf("\nx[%d]=%d",i+1,x[i]); Một số giải thuật - Tính tổng VD:Tính tổng của mảng nguyên x int x[10],i,n,T; n=10;T=0; for(i=0;i<n;i++) T+=x[i]; //T=T+x[i]; - Tìm biến VD:Tìm xem có bao nhiêu phần tử mảng x có giá trị lớn hơn 5. int x[10],i,n,dem; n=10;dem=0; for(i=0;i<n;i++) if (x[i]>5) dem=dem+1; - Xắp xếp VD: Xắp xếp mảng x theo thứ tự tăng dần: int x[10],i,j,n,tg; n=10; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if (x[i]>x[j]) { tg=x[i];x[i]=x[j];x[j]=tg; } c.Xử lý con trỏ Khai báo Cú pháp:*; VD: Khai báo biến con trỏ thực với tên là px. double *px; Toán tử &,* - Toán tử &: &(tên biến) -> địa chỉ biến VD: printf("\n Dia chi cua bien x la:&p",&x); - Toán tử *: * -> trả lại nôi dung của ô nhớ(biến) mà con trỏ trỏ tới. VD: x=5.7; px =&x; printf("Gia tri cua x la:%lf",*px); - Các phép toán với con trỏ: * Gán 1 địa chỉ cho 1 con trỏ int i,*pi; pi=&i; * Gán các con trỏ cùng kiểu int *pi2; pi2=pi; * Cộng trừ con trỏ với số nguyên Chú ý: con trỏ sẽ trỏ tới ô nhớ có địa chỉ tăng(giảm) 1 số lượng bằng số byte tương ứng với kiểu dữ liệu của con trỏ VD: px -> có giá trị ACF1 px+1 -> có giá trị ACF9 - Con trỏ void(); Là kiễu void rỗng, không tương ứng với bất kỳ ô nhớ nào, có thể nhận được địa chỉ của bất kỳ 1 biến nào. VD: int *pi; double *px; void *pp; pp=pi; pp=px; - Liên hệ giữa con trỏ và mảng Khi khai báo 1 mảng thì đồng thời có 1 hằng con trỏ có tên trùng với tên của mảng trỏ vào phần tủ đầu tiên của mảng. Do đó muốn truy cập phâng tử thứ i của mảng x có nhiều cách VD: int x[10],*pi,i; pi=x; printf("Gia tri phan tu thu %d cua mang la%d",i+1,*(x+i)); printf("Gia tri phan tu thu %d cua mang la%d",i+1,pi[i]); printf("Gia tri phan tu thu %d cua mang la%d",i+1,*(pi+i)); printf("Gia tri phan tu thu %d cua mang la%d",i+1,x[i]); - Chuỗi kí tự Chuỗi kí tự là 1 mảng kí tự. Do đó khi thao tác với nó ta thao tác như với 1 mảng các kí tự và có dùng con trỏ kí tự Lưu ý: trước hàm vào dữ liệu ký tự, chuỗi ký tự nên dùng hàm xoá hết các ký tự còn lưu lại trong bộ nhớbàn phím. d.Xử lý hàm Khai báo hàm:Tạo hàm sau chương trình chính song khai báo hàm trước chương trình chính. Việc tạo và khai báo thế nào sẽ được cụ thể qua các ví dụ. Định nghĩa hàm:[Kiểu DL trả về]([D/sách các tham số]) VD: #include #include #include double vhn(double,double) void main() { double p,t,v; p=600;t=500;v=vhn(p,t); printf(“\n The tich rieng hoi nuoc tai %10.2lf at va %10.2lf oC la %10.2lf m3/kg”,p,t,v); getch(); } double vhn(double p,double t) { double tg; t +=273.15; tg=8314*t/p-1.224E6/pow(t,3); return tg; } Một số chương trình: #include #include int A[22][32],B[22][32],C[22][32]; int i,j,x,m,n,p,k; void main() { printf("\n nhap so hang ma tran A: m="); scanf("%d",&m); printf("\n nhap so cot ma tran A: n="); scanf("%d",&n); printf("\n nhap so cot ma tran B: p= "); scanf("%d",&p); printf("Hay nhap cac phan tu cua ma tran:\n"); printf(" Nhap ma tran A:\n"); for(i=1;i<=m;i++) for(j=1;j<=n;j++) {printf("A[%d][%d]=",i,j); scanf("%d",&x); A[i][j]=x;} printf(" Nhap ma tran B:\n"); for(i=1;i<=n;i++) for(j=1;j<=p;j++) { printf("B[%d][%d]=",i,j); scanf("%d",&x); B[i][j]=x; } for(i=1;i<=m;i++) for(j=1;j<=p;j++) { x=0; for(k=1;k<=n;k++) x+=A[i][k]*B[k][j]; C[i][j]=x; } printf("\n Ma tran A la:\n"); for(i=1;i<=m;i++) { for(j=1;j<=n;j++) printf("%5d",A[i][j]); printf("\n"); } printf("\n Ma tran B la:\n"); for(i=1;i<=n;i++) { for(j=1;j<=p;j++) printf("%5d",B[i][j]); printf("\n"); } printf("\n Tich hai ma tran AB la:\n"); for(i=1;i<=m;i++) { for(j=1;j<=p;j++) printf("%5d",C[i][j]); printf("\n"); } for(i=1;i<=p;i++) { float x; x=0; for(j=1;j<=m;j++) x=x+C[j][i]; printf("\n Gia tri trung binh cua cot %d la: %lf",i,x/m); } } Kết quả chạy: #include #include main() { double x[30],y[30],l[30],p,xo,yo,tg,t,tt,xx,yy; int i,j,n,m,k,a; printf("\n nhap n="); scanf("%d",&n); m=0;k=0; a=0; do { for(i=0;i<=n+a;i++) { printf("x[%d]=",i+m); scanf("%lf",&tg); x[i+m]=tg; } for(i=0;i<=n+a;i++) { printf("y[%d]=",i+m); scanf("%lf",&tg); y[i+m]=tg; } printf("\n ta co bang sau:"); printf("\nx:"); for(i=0;i<=n;i++) printf("%5.2lf ",x[i]); printf("\n"); for(i=0;i<4*n+5;i++) printf("--"); printf("\ny:"); for(i=0;i<=n;i++) printf("%5.2lf ",y[i]); do { printf("\n nhap xo="); scanf("%lf",&xo); p=0; for(j=0;j<=n;j++) { l[j]=1; for(i=0;i<=n;i++) if(i!=j) l[j]*=(xo-x[i])/(x[j]-x[i]); p+=y[j]*l[j]; } yo=p; printf("\n gia tri tai %10.4lf la%10.4lf",xo,yo); printf("\nkhong muon tiep tuc nhap xo thi an 1 en ter"); scanf("%lf",&t); } while(t!=1); printf("\n khong muon tiep tuc nhap n thi an 2 enter"); scanf("%lf",&tt); if(tt!=2) { printf("\n so diem ban muon nhap them la:"); scanf("%d",&k); m=n+1;n=n+k; a=k-n-1; } } while(tt!=2); printf("\n nhap xx="); scanf("%lf",&xx); if(xx<x[0]) i=0; if(xx>x[n]) i=n; if(xx>=x[0]&&xx<=x[n]) for(i=0;i<=n;i++) if(xx>=x[i]&&xx<=x[i+1]) break; yy=y[i]+(xx-x[i])*(y[i+1]-y[i])/(x[i+1]-x[i]); printf("\n gia tri tai x=%lf la: y=%lf",xx,yy); getch(); } Kết quả chạy: #include #include main() { int n,i,j,k,l,p,q,a; printf("\n nhap so hang n(<6)="); scanf("%d",&n); for(p=0;p<12;p++) for(i=0;i<n;i++) { for(q=0;q<5;q++) { for(j=0;j<i+3;j++) printf("$"); printf(" "); for(k=0;k<2*n-3-2*i;k++) printf("*"); if(2*n-3-2*i>0) printf(" "); for(l=0;l<i+3;l++) printf("$"); } printf("\n"); } getch(); } 2. Phần 2:Tính nhiệt thông số nhiệt động của hơi bão hoà ẩm a.Mở đầu Trong các bài toán nhiệt môi chất đợc sử dụng khá nhiều là R12. Do vậy việc tra cứu các thông số của R12 là một quá trình thường xuyên được sử dụng khi giải các bài toán liên quan tới nó. Việc có một chơng trinh tra cứu các thông số hơi R12 sẽ đem lại sự thuận tiện và hữu ích cho ngươi sử dụng để giải toán. Trong chơng trình này ta mới dừng lại ở việc tra cứu các thông số của hơi bão hoà ẩm theo thông số nhiệt độ t(oc) hay áp suấp p(bar) và độ khô x. b.Bài toán Tra cứu thông số của hơi bão hào ẩm theo thông số t(oc)hay p(bar) và độ khô x. Trong đó các thông số cần phải tìm là thể tích riêng v(m3/kg), entanpi i(kj/kg), entropi s(kj/kg.k) ,nội năng u(kj/kg). Trên thực tế đây là một bài toán nhiệt đơn giản, cả về mặt lập trình C lẫn lý thuyết nhiệt. Ta chú ý cac công thức sau: s=s’+x(s’’-s’) i=i’+x(i’’-i’) v=v’+x(v’’-v’) u=i-p.v Các giá trị s’,s’’,i’,i’’,v’,v’’ được tra từ bảng. Chúng ta chỉ cần có một bảng số liệu và đưa chúng vào chương trình sau đó dựa vào thông số đưa vào và một số công thức nhiệt để tra cứu. Từ đó ta có thể hoàn thiện một chơng trình tính nhiệt cơ bản của một môi chất đã chọn. Về thuật giải bài toán này là khá đơn giản, vì vậy mà ta không trình bày ở đây. Chúng ta có thể tìm hiểu chúng luôn thông qua nội dung bài giải sau. c.Nội dung bài giải: Chú ý rằng nhiệt độ là số nguyên : t=-80;-79;-78;,,,,,,,,;78;79;80. nên ta không cần nhập vào. main() { int j,k,index,chon; float x; double tt,u,v,i,s,pp,ss1,ss2,hh1,hh2,rr,ff1,ff2; do { printf("\n1:Tinh toan thong so nhiet"); printf("\n2:Bang hoi bao hoa cua R12"); printf("\n3:Thoat"); printf("\nChon muc:"); scanf("%d",&index); switch(index) { case 1: printf("\n Ban nhap vao nhiet do t hay ap suat p?"); printf("\n Nhap nhiet do t(oc) thi an 1 enter ,nhap ap suat p(bar) thi an 2 enter"); scanf("%d",&chon); if(chon==2) { printf("\n Ban hay nhap vao ap suat p="); scanf("%lf",&pp); if(pp<0.06168) j=0; if(pp>41.4490) j=159; if(pp>=0.06168&&pp<=41.4490) for(j=0;j<=159;j++) if(pp>=p[j]&&pp<=p[j+1]) break; tt=t[j]+(pp-p[j])*(t[j+1]-t[j])/(p[j+1]-p[j]); } if(chon==1) { printf("\n Ban hay nhap vao nhiet do cua R12 de tra cac thong so!"); printf(" t(oc)=");scanf("%lf",&tt); } do { printf("\n Ban hay nhap do kho (0<=x<=1)x="); scanf("%f",&x); if((x1)) { printf("\n Ban da nhap khong dung gia tri cua do kho x!"); printf("\n Ban hay nhap lai!"); } } while(x1); if(tt<-80) j=0; if(tt>80) j=159; k=0; if(tt>=-80&&tt<=80) for(j=0;j<=159,k=0;j++) if(tt>=t[j]&&tt<=t[j++]) k=1; pp=p[j]+(tt-t[j])*(p[j+1]-p[j])/(t[j+1]-t[j]); ff1=f1[j]+(tt-t[j])*(f1[j+1]-f1[j])/(t[j+1]-t[j]); ff2=f2[j]+(tt-t[j])*(f2[j+1]-f2[j])/(t[j+1]-t[j]); hh1=h1[j]+(tt-t[j])*(h1[j+1]-h1[j])/(t[j+1]-t[j]); hh2=h2[j]+(tt-t[j])*(h2[j+1]-h2[j])/(t[j+1]-t[j]); rr=r[j]+(tt-t[j])*(r[j+1]-r[j])/(t[j+1]-t[j]); ss1=s1[j]+(tt-t[j])*(s1[j+1]-s1[j])/(t[j+1]-t[j]); ss2=s2[j]+(tt-t[j])*(s2[j+1]-s2[j])/(t[j+1]-t[j]); printf("\n Ta tra duoc cac thong so :"); printf("\n Nhiet do:%lf (K)",tt+273); printf("\n Ap suat bao hoa:%lf (bar)",pp); printf("\n Khoi luong rieng o the long(soi):%lf (kg/dm3)",ff1); printf("\n Khoi luong rieng hoi bao hoa kho:%lf (kg/m3)",ff2); printf("\n The tich rieng o the long: %lf (dm3/kg)",1/ff1); printf("\n The tich rieng hoi bao hoa kho: %lf (m3/kg)",1/ff2); printf("\n Entanpi o the long(soi): %lf (kj/kg)", hh1); printf("\n Entanpi hoi bao hoa kho: %lf (kj/kg)",hh2); printf("\n Nhiet an r=%lf (kj/kg)",rr); printf("\n Entropi o the long: %lf (kj/kg.k)",ss1); printf("\n Entropi hoi bao hoa kho: %lf (kj/kg.k)",ss2); printf("\n"); printf("\n Voi do kho x=%4.3lf=>cac thong so cua hoi bao hoa am!",x); v=1/ff1+x*(1/ff2-1/ff1); printf("\n The tich v=%lf (kg/m3)",v); i=hh1+x*(hh2-hh1); printf("\n Entanpi i=%lf (kj/kg)",i); s=ss1 +x*(ss2-ss1); printf("\n Entropi s=%lf (kj/kg.K)",s); break; case 2: printf("\n Bang hoi bao hoa cua R12:"); printf("\n t[oc]p[bar]f1[kg/dm3]f2[kg/m3]v1[dm3/kg]v2[m3/kg]h1[kj/kg]h2[kj/kg]s1[kj/kg.k]s2[kj/kg.k]"); for(int j=-80;j<=80;j++) printf("\n %d %6.4f %6.4lf %5.4lf %5.4lf %5.1lf %5.2lf %5.4lf %5.4lf",j,p[j+80],f1[j+80],f2[j+80],1/f1[j+80],1/f2[j+80],h1[j+80],h2[j+80],s1[j+80],s2[j+80]); break; } } while (index!=3);} 3. Phần 3:Bài toán tính nhiệt Tua bin hơi nước 1 tầng cánh. a.Mở đầu Tuabin hơi nước là động cơ nhiệt trong đó thế năng của hơi nước được chuyển hoá thành cơ năng để quay roto: Tuabin gồm có 2 tổ hợp dãy cánh:dãy cánh tĩnh lắp trong hộp & dãy cánh động quay lắp trên đĩa, kế tiếp theo đường hơi đi đươc gọi là tầng tuabin.ở trong mỗi dãy ống phun dòng hơi được gia tốc trong các rãnh ống phun đã được định hình và hướng vào các các quạt động lực do dòng hơi tác động lên cánh quạt động sẽ làm quay đĩa và trục. Môi chất sử dụng là hơi nước, trong bài toán này ta tính tầng đơn nên tất cả các thông số nhiệt động là thông số của hơi quá nhiệt. Hơi nước có thể coi là lý tưởng và ta có thể áp dụng các công thức của khí lý tưởng cho các quá trình nhiệt động(đẳng entropi). Một số đại lượng cần xác định và tính toán trong bài toán tính nhiệt Tuabin 1 tầng cánh: H0 :nhiệt giáng nuyoi(): hiệu suất tương đối nuyoi = Hi/H0; Hi: nhiệt giáng sử dụng H0: nhiệt giáng sử dụng tầng nuyol(): hiệu suất trên cánh quạt b.Bài toán Tính tầng tuabin đơn khi biết các đại lượng đầu vào: Lưu lượng hơi G(kg/s), áp suất hơi trước tầng p0(bar), tốc độ hơi vào tầng C0(m/s), áp suất sau tầng p2(bar), tần số quay n(), đường kính trung bình d(m) Ta cần tính toán các thông số của tuabin: tốc độ ra của cánh ống phun, cánh động, tốc độ vào cánh động(C1t, C1, C2, W1, W2t, W2),diện tích ra dãy ống phun, dãy cánh động, chiều cao ống phun, cánh động các góc trên tam giác tốc độ(ở bài lập trình ta chỉ tính tang của các góc này,F1, F2, l1, l2, tg Tam giác tốc độ: beta2 W2 C2 U anfa2 beta1 W1 U C1 anfa1 Trong bài ta chỉ xét đến 2 loại tổn thất chủ yếu là: tổn thất trong dãy ống phun Hc(kj/kg), tổn thất trong dãy cánh động Hl(kj/kg) và từ đó tính đến năng lượng lý thuyết của tầng E0(kj/kg), nhiệt giáng sử dụng tầng(Hi), công suất trong của tầng Pi(kW) Khi tính toán tầng thường chọn độ phản lực rô=0.1->0.5 Chấp nhận hệ số lưu lượng muy = 0.975 Hệ số tốc độ phi thường từ 0.96 ->0.98 Hệ số tốc độ psi thường được lấy từ 0.86 ->0.96 Độ chờm khi xác định chiều cao cánh động lấy bằng 0.0035(m) Hệ số dùng cho tầng tiếp theo nằm trong khoảng lấy trung bình là: 0.75 Bài này ta chỉ quan tâm tới thông số vào ra của tầng đơn Do đó ta tính những thông số cơ bản nhất mà chưa tính toán toàn bộ Khi tính toán nhiệt tầng tuabin ta phải dựng quá trình trên giản đồ i-s của hơi nước: Điểm quan trọng của bài toán là ta phải lập trình cho máy tính xác định được entanpi của hơi nước tại các điểm đầu ra của dãy ống phun, dãy cánh động và tại điểm giãn nở của hơi trong cánh động(do bài toán có tính đến độ phản lực ) Tất cả các công việc trên ta thực hiện bằng cách nội suy tuyến tính theo miền Các bước giải của bài toán đựơc thể hiện như sau: Bước 1: Thực hiện nội suy tuyến tính:tìm khoảng trong dãy điểm nhập vào(trong bài lập trình là một ma trận 1 chiều)có chứa điểm mà ta cần xác định. Bước này ta tổ chức thành 1 hàm riêng Bước 2: Thực hiện nội suy tuyến tính theo miền:(Thực chất là nội suy tuyến tính theo 2 chiều với ma trận dữ liệu vào là một mảng 2 chiều). Mục đích là tìm entanpi theo p&t và ta cũng làm 1 hàm với 2 tham số hình thức là p&t theo dữ liệu vào là 1 ma trận 2 chiều theo p&t của entanpi hơi quá nhiệt Kết quả nhận được như sau: Với bài toán này ta coi là hơi quá nhiệt(không có độ ẩm) là khí lý tưởng và xác định nhiệt độ tại điểm 2(p2,t2) bằng phương trình sau: T2/T2 = (p2/p2) , với T là nhiệt độ tuyệt đối, k là số mũ đoạn nhiệt. Từ đó ta xác định được nhiệt độ t2 và thực hiện nội suy tuyến tính theo miền để tìm entanpi. Để xác định entanpi trong cánh động ta phải đi tìm nhiệt độ tk&pk, điểm này phải có cùng entropi với điểm (p0,t0) và (p2,t2), tức là từ điểm 0->k->2 là quá trình đẳng entropi. Ta cũng lập một hàm riêng để xác định entropi theo nhiệt độ và áp suất bằng giải thuật như với trường hợp xác định entanpi.Từ đó biết entropi và xác định được entanpi của điểm này nhờ công thức: ik = (i0 – i2) + i2t, với i0, i2 là entanpi tại điểm 0, 2. Ta xây dựng hàm tính tk&pk theo entanpi & entropi bằng cách lặp như sau: Tạo giá trị ban đầu tk= tk* pk = pk* tính entanpi & entropi theo tk* &pk* (theo cách ở trên) nếu (entropi-0.5 <entropi*(vừa tính) <entropi +0.5) và(entanpi-1 < entanpi(vừa tính)<entanpi+1) Thoát Nếu chưa thoả mãn điều kiện trên Tiếp tục tăng tk &pk Lại tìm entanpi trong cánh động theo tk& pk Một hàm quan trọng khác là hàm tìm thể tích riêng lý thuyết theo nhiệt độ và áp suất Ta sử dụng hàm sau: v = Kết quả nhận được như sau: Tất cả các đại lượng còn lại đều đã có công thức tường minh(các công thức sau đây đươc lấy ra từ sách tuốc bin hơi nước GS.TS Phạm Lương Tuệ) áp suất hãm trước tầng(bar) :p0h = h0+C0.khi0/2; Tỷ số tốc độ :u/Ca = u/ Độ phản lực rô :chọn Nhiệt giáng lý thuyết trong dãy ống phun (kj/kg) : h01 = (1-ro)h0h (hoh:nhiệt giáng với thông số hãm) Nhiệt giáng lý thuyết trong dãy cánh động(kj/kg) :h02 = r o.h0 Tốc ra lý thuyết khỏi cánh ống phun(m/s) :C1t = Diện tích ra của dãy ống phun(m) :F1 = Chiều cao của cánh ống phun(m) :l1 = Tốc độ ra của hơI khỏi dãy ống phun (m) :C1 = Tốc độ tương đối đầu vào cánh động(m): W1 = Góc hướng beta của tốc độ tương đối W1 :tg Tốc độ ra lý thuyết của cánh động(m/s) :W Chiều cao cánh động(m) :l2 = l1+ Diện tích ra của dãy cánh động(m) :F2 = Góc hướng beta2 của tốc độ W2 :sin Tốc độ tương đối của đầu ra cánh đợng W2 :W2 = Tốc độ tuyệt đối đầu ra cánh động (m) :C2 = Góc hướng anfa2 của tốc độ C2 (m) : Tổn thất trong dãy ống phun Hc(kj/kg) :Hc= Tổn thất trong dãy cánh động Hl(kj/kg) :Hl= Năng lượng của tốc độ ra Hc2(kj/kg) :Hc2= Năng lượng lý thuyết của tầng E0(kj/kg) :E0=h0-khic2.Hc2 Hiệu suất trên cánh quạt : Nhiệt giáng sử dụng của tầng(kj/kg) :Hi =Eo-Ho-Hl Công suất trong của tầng(kW) :Pi =G.Hi Hiệu suất tương đối của tầng : Thuật giải bài toán được cụ thể như sau: Nhập thông số đầu vào P0, t0, p2, G, d, Co,ro, muy1, muy2, pxi, phi, anfa1 khico, khic2: (đây là các thông số đầu vào cần thiết) Nội suy các giá trị: noisuytuyentinh(double t,double p) //hàm nội suy tuyến tính 1 chiều tìm entanpi noisuytuyentinhmien(double t, double p) //hàm nội suy vị trí vùng có chứa điểm cần nội suy tuyến tính entanpi cần tìm ham_h1(……………………..) //nhập các điểm giá tri entanpi vào mảng 2 chiều để nội suy ham_h2(………………….) ham_s(….)……….(tất cả đều có trong bài lập trình) Tính toán: Tính tất cả các thông số của tuabin Mà ta đã xác định bằng các công thức ở trên Ta có sử dụng thư viện hàm chuẩn là “math.h” In kết quả c.Nội dung bài giải #include #include #include #define R 8314 #define pi 3.14 #define k 1.3 typedef double MT[10][10]; double nstuyentinh(int n, double *x , double *y, double x0); //n so cot //x0 gia tri can tinh tai x0 //x,y ma tran gia tri nhap vao double nstuyentinhmien(int n, int m,double *x,double *y, MT z, double x0, double y0); //n cot //m hang //x,y ma tran //z ma tran 2 chieu double ham_h1(double t,double p); //p ap suat //t nhiet do //ham entanpi theo ap suat va nhiet do double ham_h2(double t,double p); //p ap suat //t nhiet do double ham_v(double t,double p); //ham the tich theo ap suat va nhiet do double ham_s(double t,double p); //ham tinh entropi theo ap suat va nhiet do void tpis(double *t,double *p); //ham tinh ap suat ,nhiet do khi biet entanpi voi qua trinh doan nhiet void inkq(); //ham in cac thong so cua tua bin tinh duoc double pp[]={ 14,16,18,20,30,40,50,60,70,80}; double tt[]={220,240,260,280,300,350,400,450,500,600 }; double s0,i0,i2,h0,u,uca,h01,h02,t2,tk,pk,v1t,v2t,C1t,C1,C2,W1,W1t,W2,W2t,F1,l1,F2, l2,Hc,Hl,Hc2,E0,nuyol,Hi,nuyoi,Pi,sinbeta2,tanbeta1,tananfa2; //cac thong so cua tua bin can tinh double G,d,n,p0,t0,C0,p2,ro,muy1,anfa1,phi,denta,muy2,pxi,khic0,khic2; //cac thong so dau vao void main() { double cosbeta2; clrscr(); printf("\n vaoluu luong hoi G(kg/s): "); scanf("%lf",&G); printf("\n duong kinh trung binh d(m): "); scanf("%lf",&d); printf("\n tan so quay n(1/s): "); scanf("%lf",&n); printf("\n ap suat hoi truoc tang p0(bar): "); scanf("%lf",&p0); printf("\n nhiet do hoi truoc tang t0(oC): "); scanf("%lf",&t0); printf("\n toc do hoi vao tang C0(m/s): "); scanf("%lf",&C0); printf("\n ap suat sau tang p2(bar): "); scanf("%lf",&p2); printf("\n do phan luc ro: "); scanf("%lf",&ro); printf("\n he so luu luong ong fun muy1: "); scanf("%lf",&muy1); printf("\n goc huong cua toc do C1,anfa1(do):"); scanf("%lf",&anfa1); printf("\n he so toc do day ong fun phi: "); scanf("%lf",&phi); printf("\n he so luu luong canh dong muy2: "); scanf("%lf",&muy2); printf("\n he so toc do day canh dong pxi: "); scanf("%lf",&pxi); printf("\n he so su dung tang khic0: "); scanf("%lf",&khic0); printf("\n he so su dung tang khic2 : "); scanf("%lf",&khic2); denta =0.0035; i0 = ham_h1(t0,p0); s0 = ham_s(t0,p0); i2 = ham_h2(t0,p2); h0 = (i0-i2) + (1e-3)*C0*C0*khic0/2; t2 = (t0+273)*pow(p2/p0,(k-1)/k) - 273; u = pi*d*n; uca = u/(sqrt((2e+3)*h0)); h01 = (1-ro)*h0; h02 =ro*h0; tpis(&tk,&pk); v1t = ham_v(tk,pk); v2t = ham_v(t2,p2); C1t = sqrt((2e+3)*h01); F1 = G*v1t/(muy1*C1t); l1 = F1/(pi*d*sin(anfa1)); C1 = phi*C1t; W1 = sqrt(C1*C1 + u*u - 2*u*C1*cos(anfa1)); W2t = sqrt((2e+3)*h02 + W1*W1); l2 = l1+denta; F2 = G*v2t/(muy2*W2t); W2 =W2t*pxi; tanbeta1 = sin(anfa1)/(cos(anfa1) - u/C1); sinbeta2 = F2/(pi*d*l2); cosbeta2 = sqrt(1 - sinbeta2*sinbeta2); C2 = sqrt(W2*W2 + u*u - 2*W2*u*cosbeta2); tananfa2 = sinbeta2/(sqrt(1 - sinbeta2*sinbeta2) - u/W2); Hc = 0.001*(1 - phi*phi)*C1t*C1t/2; Hl = 0.001*(1 - phi*phi)*W1*W1/2; Hc2 = 0.001*C2*C2/2; E0 = h0 - khic2*Hc2; Hi = E0 - Hc -Hl - (1-khic2)*Hc2; Pi = G*Hi; nuyol = (E0 - Hc - Hl)/E0; nuyoi = Hi/E0; inkq(); } void inkq() { printf(" KET QUA BAI TOAN TINH NHIET TANG TUA BIN HOI NUOC "); printf("\n************************************************************"); printf("\nEntanpi cua hoi truoc tang i0: %10.4lf(kj/kg)",i0); printf("\nEntanpi hoi sau tang i2: %10.4lf(kj/kg)",i2); printf("\nEntropi cua qua trinh doan nhiet s0: %10.4lf(kj/kg.k)",s0); printf("\nNhiet giang ly thuyet cua tang theo thong so ham h0: %10.4lf(kj/kg)",h0); printf("\nToc do vong quay: u: %10.4lf(m/s)",u); printf("\nTy so toc do uca: %10.4lf",uca); printf("\nNhiet giang ly thuyet trong day ong phun h01: %10.4lf(kj/kg)",h01); printf("\nNhiet giang ly thuyet trong day canh dong h02: %10.4lf(kj/kg)",h02); printf("\nThe tich rieng sau day ong phun(ly thuyet) v1t: %10.4lf(m3/kg)",v1t); printf("\nThe tich rieng sau day canh dong(ly thuyet) v2t: %10.4lf(m3/kg)",v2t); printf("\nToc do ra ly thuyet cua day ong phun C1t: %10.4lf(m/s)",C1t); printf("\nToc do ra khoi day ong phun C1: %10.4lf(m/s)",C1); printf("\nToc do tuong doi dau vao canh dong W1: %10.4lf(m/s)",W1); printf("\nToc do ra ly thuyet khoi canh dong W2t: %10.4lf(m/s)",W2t); printf("\nToc do tuong doi dau ra canh dong W2: %10.4lf(m/s)",W2); printf("\nToc do tuyet doi dau ra canh dong C2: %10.4lf(m/s)",C2); printf("\nDien tich ra khoi ong phun F1: %10.4lf(m2)",F1); printf("\nChieu cao canh ong phun l1: %10.4lf(m)",l1); printf("\nDien tich ra cua day canh dong F2: %10.4lf(m2)",F2); printf("\nChieu cao canh dong l2: %10.4lf(m)",l2); printf("\nGoc huong beta1(tang) cua toc do tuong doi W1 : %10.4lf",tanbeta1); printf("\nGoc huong anfa2(tang) cua toc do C2 : %10.4lf",tananfa2); printf("\nGoc huong beta2(sin) cua toc do W2 : %10.4lf",sinbeta2); printf("\nTon that trong day ong phun Hc Hc: %10.4lf(kj/kg)",Hc); printf("\nTon that trong day canh dong Hl Hl: %10.4lf(kj/kg)",Hl); printf("\nNang luong cua toc do ra Hc2 Hc2: %10.4lf(kj.kg)",Hc2); printf("\nNang ly thuyet cua tang E0 E0: %10.4lf(kj/kg)",E0); printf("\nNhiet giang su dung tang Hi Hi: %10.4lf(kj/kg)",Hi); printf("\nHieu suat tren canh quat nuyol: %10.4lf",nuyol); printf("\nHieu suat trong tuong doi cua tang nuyoi: %10.4lf",nuyoi); printf("\nCong suat trong cua tang Pi: %10.4lf(kW)",Pi); getch(); } double nstuyentinh(int n,double *x,double *y,double x0) { int i; double tg; if(x0<=x[0]) i=0; if(x0>=x[n]) i=n-1; // tim khoang chua x0 if((x0>x[0])&&(x0<x[n])) for(i=0;i<=n-1;i++) if((x0>=x[i])&&(x0<x[i+1])) break; //tinh gia tri ham tai x0,y0 tg=y[i]+(x0-x[i])*(y[i+1]-y[i])/(x[i+1]-x[i]); return tg; } double nstuyentinhmien(int n,int m,double *x, double *y, MT z,double x0, double y0) { int i,j; double c1,c2,a[10],itg; if(y0<=y[0]) j=0; if(y0>=y[m]) j=m-1; //tim khoang hang co chua hang y0 if((y0>y[0])&&(y0<y[m])) for(j=0;j<m;j++) if((y0>=y[j])&&(y0<y[j+1])) break; //sao chep hang j cua ma trn z for(i=0;i<n;i++) a[i]=z[j][i]; c1=nstuyentinh(n,x,a,x0); for(i=0;i<n;i++) a[i]=z[j+1][i]; c2=nstuyentinh(n,x,a,x0); itg=c1+(c2-c1)*(y0-y[j])/(y[j+1]-y[j]); return itg; } double ham_h1(double t , double p) { int n,m; n=10;m=10; double ii[10][10]={2855,2902,2948,2992,3036,3147,3256,3365,3474,3695, 2844,2893,2940,2986,3030,3142,3243,3363,3472,3693, 2833,2884,2932,2979,3025,3138,3249,3360,3470,3691, 2821,2875,2924,2972,3019,3134,3246,3357,3468,3690, 943.5,2823,2882,2947,2988,3111,3229,3343,3456,3682, 943.7,1037.49,2838.65,2901.45,2958.39,3089.44,3212.11,3330.18,3445.73,3647.75, 944.12,1037.49,1135.04,2858.33,2924.06,3065.57,3194.10,3315.94,3434.43,3666.8, 944.12,1037.49,1134.20,2809.34,2884.70,3014.29,3176.52,3301.29,3422.71,3658.43, 944.54,1037.49,1134.20,1235.94,2841.58,3015.75,3157.26,3287.05,3410.98,3650, 945.1,1037.9,1134.4,1235.4,2784,2985,3135,3270,3397,3640 }; return nstuyentinhmien(n,m,tt,pp,ii,t,p); } double ham_s(double t,double p) { int n,m; n=10;m=10; double ss[10][10]={6.602,6.697,6.784,6.867,6.945,7.130,7.299,7.455,7.601,7.870, 6.524,6.622,6.711,6.796,6.877,7.063,7.233,7.390,7.537,7.806, 6.452,6.554,6.646,6.732,6.814,7.003,7.175,7.333,7.480,7.750, 6.385,6.491,6.585,6.674,6.757,6.949,7.122,7.282,7.429,7.701, 2.5146,6.255,6.337,6.438,6.530,6.735,6.916,7.080,7.231,7.506, 2.512,2.698,6.148,6.262,6.364,6.585,6.773,6.943,7.098,7.376, 2.510,2.696,2.883,6.097,6.214,6.453,6.651,6.825,6.984,7.267, 2.508,2.693,2.880,5.940,6.076,6.339,6.546,6.726,6.888,7.175, 2.506,2.691,2.876,3.063,5.943,6.235,5.455,6.640,6.806,7.097, 2.504,2.688,2.873,3.509,5.788,6.126,6.358,6.552,6.722,7.019}; return nstuyentinhmien(n,m,tt,pp,ss,t,p); } double ham_h2(double t,double p) { double ttg2,ktg; ktg=(k-1)/k; ttg2=(t0+273)*pow((p2/p0),ktg)-273; return ham_h1(ttg2,p2); } void tpis(double *t,double *p) { double ptg,ttg,i,s; ptg=p2; ttg=(t0+273)*pow(p2/p0,(1.3-1)/1.3) - 273; do { i=ham_h1(ttg,ptg); s=ham_s(ttg,ptg); ttg+=1; ptg+=0.1; } while(((i2+h02+2) <= i)&&(i <=(i2+h02-2))&&((s0+0.5) <= s)&&(s <=(s0-0.5))); *t=ttg; *p=ptg; } double ham_v(double t,double p) { double vtg; vtg=R*(t+273)/((p*1e+5)*18) - 1.234e+6/pow((t+273),3); return vtg; } d.Kết quả chạy chương trình

Các file đính kèm theo tài liệu này:

  • docBK0005.DOC