atefeh_ashouri
عضو جدید
سلام.مي خواستم بدونم ميتونين در زمينه پروژه ارشدم(برآورد ميزان اتلاف بنزين از مخازن پمپ بنزين ها در اثر تبخير) بهم كمك كنين.ازتون ممنون ميشم.
خواهش می کنم اگه میشه برام پیدا کنید باید تا چند هفته دیگه اراءش بدم
با سلام به همه مهندسان فعال جامعه مهندسي !
خيلي وقته دنبال كتاب turton مي گردم . اگه كسي ديدش سلام منو بهش برسونه !
Analysis, Synthesis, and Design of Chemical Processes, 2/E View Larger Image Richard Turton, West Virginia University
Richard C. Bailie, New Bern, North Carolina
Wallace B. Whiting, University of Nevada
Joseph A. Shaeiwitz, West Virginia University
Publisher: Prentice Hall
Copyright: 2003
Format: Cloth Bound w/CD-ROM; 987 pp
ISBN-10:0130647926ISBN-13:9780130647924
منظورتونو از پوششهای آن متوجه نمیشم. اما در مورد خود بتن و انواعش اگه مطلبی میخواید یه سر به بخش سازه های تالار معماری بزنید.
از دوستاني كه در مورد بتن و پوششهاي ان مطلب دارند( فارسي ؤ english فرقي نداره) كمك ميخوام پيشاپيش دمتون گرم
برای خوندن فایلهای با فرمت DJVU باید از نرم افزارهای کم حجم خواننده این نوع فایل استفاده کرد که هم نوع معمولیشون موجوده و هم نوع Portable دارند؛ممنون که واسم گذاشتی
متاسفانه نتونستم
پیداش کنم
چه طوری میشه خوندش؟
این کتاب در اینترنت موجود نیست(لااقل تا الان مثله خیلی از کتابا)سلام
کتاب Process Control and Identification
]
نوشته by W Fred Ramirez
متشکر
سلام.
من دانشجوی ترم آخر مهندسی شیمی(صنایع پالایش- پتروشیمی -گاز ) هستم.که قصد ادامه تحصیل در رشته MBA دارم.برای پروژه لیسانسم دنبال موضوع میگردم.که اگه بشه میخوام موضوعی باشه که بتونم در کارشناسی ارشد هم دنبالش کنم.میخواستم ببینم کسی میتونه کمکم کنه موضوعی پیدا کنم که هم به مهندسی شیمی ربط داشته باشه هم به MBA ؟
ممنون میشم کمک کنید.
سلام
کسی برنامه ی روش گوس سایدلgauss seidel رو برای حل n معادله وn مجهول به زبان فرترن داره؟؟؟؟؟؟
خیلی زود میخوامش
! ---------------------PROGRAM GAUSSIAN
! gauss.f90
! PROGRAM OF GAUSSIAN ELIMINATION
PARAMETER (IN=20)
REAL:: A(IN,IN), B(IN)
PRINT *,'INPUT NUMBER OF EQUATIONS N='
READ (5,*) N
PRINT *,'INPUT MATRIX COEFFICIENTS A(I,J)='
READ (5,*) ((A(I,J),J=1,N),I=1,N)
PRINT *,'INPUT RIGHT-HAND SIDE VECTOR B(I)='
READ (5,*) (B(I),I=1,N)
WRITE (6,*) ('****GAUSSIAN ELIMINATION ****')
WRITE (6,*)
WRITE (6,*) ('COEFFICIENT MATRIX you inputed:')
CALL PRINTA(A,IN,N,N,6)
WRITE(6,*)
WRITE(6,*) ('right hand side vector you inputed:')
CALL PRINTV(B,N,6)
WRITE(6,*)
! CONVERT TO UPPER TRIANGULAR FORM
DO K = 1,N-1
IF (ABS(A(K,K)).GT.1.E-6) THEN
DO I = K+1, N
X = A(I,K)/A(K,K)
DO J = K+1, N
A(I,J) = A(I,J) -A(K,J)*X
ENDDO
B(I) = B(I) - B(K)*X
ENDDO
ELSE
WRITE (6,*) 'ZERO PIVOT FOUND IN LINE:'
WRITE (6,*) K
STOP
END IF
ENDDO
WRITE(6,*) 'MODIFIED MATRIX'
CALL PRINTA(A,IN,N,N,6)
WRITE(6,*)
WRITE(6,*) 'MODIFIED RIGHT HAND SIDE VECTOR'
CALL PRINTV (B,N,6)
WRITE(6,*)
! BACK SUBSTITUTION
DO I = N,1,-1
SUM = B(I)
IF (I.LT.N) THEN
DO J= I+1,N
SUM = SUM - A(I,J)*B(J)
ENDDO
END IF
B(I) = SUM/A(I,I)
ENDDO
! PRINT THE RESULTS
write(6,*) ('SOLUTION VECTOR')
CALL PRINTV(B,N,6)
!
END PROGRAM GAUSSIAN
!------------------------------------------
SUBROUTINE PRINTA(A,IA,M,N,ICH)
!
! WRITE A 2D ARRAY TO OUTPUT CHANNEL 'ICH'
!
REAL A(IA,*)
DO I =1,M
WRITE(ICH,2) (A(I,J),J=1,N)
ENDDO
2 FORMAT(1X,6E12.4)
!
END SUBROUTINE PRINTA
!-----------------------------------------
SUBROUTINE PRINTV(VEC,N,ICH)
!
! WRITE A COLUMN VECTOR TO CHANNEL 'ICH'
!
REAL VEC(*)
WRITE(ICH,1) (VEC(I),I=1,N)
1 FORMAT(1X,6E12.4)
!
END SUBROUTINE PRINTV
!-----------------------------------------
To solve a Pison equation as a parallel programming test ( task level ).
! \phi=sin(\pi x)sin(\pi y)
! \nabla^2 \phi = -2\pi^2 sin{\pi x) sin{\pi y)
! We chose \rho = -2\pi^2 sin(\pi x) sin(\pi y)
! solve \nabla^2 \phi = \rho
! we can have a analysis result to compare the numerical solution
!
! Use the function etime(r) as the timing function for parallel processors.
!
! ===========================================================================
!
! File kind_module
MODULE kind_spec_module
!
implicit none
!
! floating point single and double precision
!
INTEGER, PARAMETER :: high = selected_real_kind(15, 307)
INTEGER, PARAMETER :: low = selected_real_kind(6, 37)
INTEGER, PARAMETER :: short= selected_int_kind(4)
INTEGER, PARAMETER :: nx=161, ny=161, NCPU=4, ny2=ny/NCPU
!
END MODULE kind_spec_module
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MODULE sor_cps_module
!
CONTAINS
!
subroutine sor_cps(aw,ae,as,an,ap,dd,solu,err,w)
!
! =====================================================================
! This is one standard iteration of the SOR routine.
! The basic goal is to solve a diffusion equation as
! \frac{\partial p}{\partial t} = \nabla^2\phi + \nabla\vac{v}
! evoluting this equation to t--->\infty, that means equilibrium,
! then we should have \frac{\partial p}{\partial t} = 0
! then the final status of the field \phi satisfies
! \nabla^2 p = -\nabla\vec{v}
!
! ====================================================================72
! The Gauss-Seidel mathod corresponds the iteration as
! (L+D)x = -Ux + b
! ={b+(-U/(L+D))b +(-U/(L+D))^2 b +(-U/(L+D))^3 b + ........}.
! This routine uses the newest matrix element after each iteration
! it is a Gauss-Seidel method routine.
! The SOR --- Simultaneous Over-Relaxation method
! u^{n+1} = w*u^{solution} + (1-w)*u^n
! = u^n + w*( u^{solution} - u^n )
! that means x^r = x^{r-1} - w*(L+D)^{-1} * \xi^{r-1}
! where \xi^{r-1} is the residual.
! (i)when 1 < w < 2 it is over-relaxation
! when 0 < w < 1 it is under-relaxation
! (ii)Only overalexation method can give faster convergence than the
! Gauss-Seidel method.
! (iii)If \rho_{jaco} is ths spectral radius of the Jacobi iteration
! then the optimal choice for w is given by
! w=\frac{2}{1+\sqrt{1-\rho^2_{jaco}}}
! (iv) For this optimal choice, the spectral radius for SOR is
!
! \rho_{sor}={\frac{\rho_{jaco}}{1+\sqrt{1-\rho_{jaco}}}}^2
!
! ===================================================================
!
USE kind_spec_module
real(high), dimension(1:nx,1:ny2,1:NCPU), intent(inout) :: aw,ae,as,an,ap,dd
real(high), dimension(0:nx,0:ny2+1,1:NCPU), intent(inout) :: solu
real(high), intent(inout) :: err(NCPU)
real(high), intent(in) :: w
real(high) :: snew
integer :: myid, i, j
integer :: cps_stid
!
myid=cps_stid() + 1
!$DIR NO_PARALLEL
do j=1,ny2
!$DIR NO_PARALLEL
do i=1,nx-1
snew = (dd(i,j,myid) &
-aw(i,j,myid)*solu(i-1,j,myid) &
-ae(i,j,myid)*solu(i+1,j,myid) &
-as(i,j,myid)*solu(i,j-1,myid) &
-an(i,j,myid)*solu(i,j+1,myid)) &
/ap(i,j,myid)
err(myid) =dabs(snew-solu(i,j,myid))
solu(i,j,myid) = solu(i,j,myid) + w*(snew-solu(i,j,myid))
enddo
enddo
!
! print *, 'error in sor is ',iter,err
end subroutine sor_cps
!
END MODULE sor_cps_module
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MODULE cpsf_module
!
CONTAINS
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
SUBROUTINE SUB_INIT(t,aw,ae,as,an,ap,dd,hx,hy)
!
! To initialize the boundary condition, source input, and regional
! initialization for each piece of region.
!
!....&...*.........*.........*.........*.........*.........*.........*..
!
USE kind_spec_module
!
real(high), dimension(0:nx,0:ny2+1,1:NCPU), intent(inout) :: t
real(high), dimension(1:nx,1:ny2,1:NCPU), intent(inout) :: aw,ae,as,an,ap,dd
real(high), intent(in) :: hx, hy
real(high) :: pi, y2hy,x,y
integer cps_stid,myid, mcps,i,j
!
! Input source function
!
mcps=cps_stid()
myid=mcps+1
write(6,*) 'myid= ', myid
pi=datan(1.0_high)*4.0_high
y2hy=hy*dfloat(ny2)*dfloat(myid-1)
!
!$DIR NO_PARALLEL
DO j=1,ny2
!$DIR NO_PARALLEL
DO i=1,nx
x=hx*(dfloat(i)-0.5_high)
y=hy*(dfloat(j)-0.5_high)+y2hy
dd(i,j,myid)=-2.0*pi**2*dsin(pi*x)*dsin(pi*y)*hx*hy
ENDDO
ENDDO
!
! Input boundary and mesh information
!
!$DIR NO_PARALLEL
DO i=1,ny2
!$DIR NO_PARALLEL
DO j=1,nx
aw(j,i,myid)=hy/hy
ae(j,i,myid)=hy/hy
as(j,i,myid)=hx/hy
an(j,i,myid)=hx/hy
ap(j,i,myid)=-aw(j,i,myid)-ae(j,i,myid)-as(j,i,myid)-an(j,i,myid)
ENDDO
ENDDO
!
! Fix the physics boundary and multi-region boundary condition
!
! X-direction all regions have X-direction physics boundary.
!
!$DIR NO_PARALLEL
DO j=1,ny2
ap(1,j,myid)=ap(1,j,myid)-aw(1,j,myid)
ap(nx-1,j,myid)=ap(nx-1,j,myid)-ae(nx-1,j,myid)
aw(1,j,myid)=0.0_high
ae(nx-1,j,myid)=0.0_high
ENDDO
!
! Y-direction only 1 and 4 rengions have Y-direction physics boundary.
!
IF(myid.eq.1) THEN
!$DIR NO_PARALLEL
DO i=1,nx
ap(i,1,1)=ap(i,1,1)-as(i,1,1)
as(i,1,1)=0.0_high
ENDDO
ENDIF
IF(myid.eq.NCPU) THEN
!$DIR NO_PARALLEL
DO i=1,nx
ap(i,ny2,NCPU)=ap(i,ny2,NCPU)-an(i,ny2,NCPU)
an(i,ny2,NCPU)=0.0_high
ENDDO
ENDIF
!
! Initialize the solution to be zero
!
!$DIR NO_PARALLEL
DO i=0,ny2+1
!$DIR NO_PARALLEL
DO j=0,nx
t(j,i,myid)=0.0_high
ENDDO
ENDDO
!
END SUBROUTINE SUB_INIT
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
SUBROUTINE CPSF(iter,t,aw,ae,as,an,ap,dd,hx,hy,crite,w)
!
! To seperate the field data array into NCPU rengions.
! To initialize the boundary condition, source input, and regional
! initialization.
!....&...*.........*.........*.........*.........*.........*.........*..
!=======================================================================
USE kind_spec_module
USE sor_cps_module
!
real(high), dimension(0:nx,0:ny2+1,NCPU), intent(inout) :: t
real(high), dimension(1:nx,1:ny2,1:NCPU), intent(inout) :: aw,ae,as,an,ap,dd
real(high), intent(in) :: hx,hy,crite,w
real(high), dimension(1:NCPU) :: err
real(high) :: error
!
integer, intent(inout) :: iter
integer, dimension(1:4) :: pargs
integer :: cps_ppcalln,ithread, N, j
!
!external sor_cps
data pargs /-2,NCPU,NCPU,1 /
! Start iteration
!
iter=0
error = 1.0_high
!
DO
if(error.lt.crite) exit
iter=iter+1
!
! Start the CPS_PPCALLN parallelization
!
ithread=cps_ppcalln(pargs,sor_cps,9,aw,ae,as,an,ap,dd,t,err,w)
if(ithread.eq.0) then
write(6,*) 'cps_ppcalln failed',ithread
return
endif
!
! Start communication to exchange the inner boundary values
!
if(mod(iter,1000).eq.0) &
write(6,*) 'iteration error criterion',iter,error,crite
!$DIR NO_PARALLEL
DO N=1,NCPU-1
!$DIR NO_PARALLEL
DO j=0,nx
t(j,ny2+1,N)=t(j,1,N+1)
t(j,0,N+1) = t(j,ny2,N)
ENDDO
ENDDO
!
! Check the criterion condition
!
error=err(1)
!$DIR NO_PARALLEL
DO j=2,NCPU
if(err(j).gt.error) error=err(j)
ENDDO
!
! To determine whether repeat the iteration or not
!
ENDDO
!
END SUBROUTINE CPSF
!
END MODULE cpsf_module
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
program test_cps
!
USE kind_spec_module
USE cpsf_module
USE sor_cps_module
!
real(high), PARAMETER :: crite=1.0d-10,w=1.5_high
!
! ===========================================================================
!
real(high), dimension(0:nx,0:ny2+1,1:NCPU) :: t
real(high), dimension(1:nx,1:ny2,1:NCPU) :: aw,ae,as,an,ap,dd
!
real(high) :: tzero,ttime,CPUTIME,hx,hy,x,y,y2hy,pi
real(low), dimension(1:2) :: tarray
real(low) :: utime1,utime2,stime1,stime2
integer, dimension(1:4) :: pargs
integer, dimension(1:3) :: iarray
integer :: cps_ppcalln,iter,ithread, i, j
!
!external sub_init, sor_cps,CPSF
!
data pargs /-2,NCPU,NCPU,1 /
!
hx=1.0_high/(dfloat(nx)-1.0_high)
hy=1.0_high/(dfloat(ny)-1.0_high)
!
ithread=cps_ppcalln(pargs,sub_init,9,t,aw,ae,as,an,ap,dd,hx,hy)
if(ithread.eq.0) then
write(6,*) 'cps_ppcalln failed', ithread
stop
endif
write(6,*) ithread
!
print *, 'ok Ax=B is ready'
call itime(iarray)
stime1=etime(tarray)
utime1=tarray(1)
stime1=tarray(2)
!
! Start using CPS_LIB to parallelize the program
!
CALL CPSF(iter,t,aw,ae,as,an,ap,dd,hx,hy,crite,w)
!
stime2=etime(tarray)
utime2=tarray(1)
stime2=tarray(2)
print *, 'sor is done with iterations # ', iter
print *, 'sor is done with CPU time of from etime ', &
utime2-utime1,'seconds'
print *, 'sor is done with system clock',stime2-stime1,'seconds'
print *, 'The wall clock started :', iarray
call itime(iarray)
print *, 'The wall clock stoped :', iarray
!
! Output the numerical solution and
! comparing with the analytical solution
!
open(8, file='out.d', status='unknown')
pi=4.0_high*datan(1.0_high)
y2hy=dfloat(ny2)*hy
!$DIR NO_PARALLEL
do i=1,nx-1
x=(i-0.5_high)*hx
!$DIR NO_PARALLEL
do j=1,ny2
y=(j-0.5_high)*hy
write(8,*) i,j,t(i,j,1),dsin(pi*x)*dsin(pi*y)
ENDDO
DO j=1,ny2
y=(j-0.5_high)*hy
write(8,*) i,j+ny2,t(i,j,2),dsin(pi*x)*dsin(pi*(y+y2hy))
ENDDO
DO j=1, ny2
y=(j-0.5_high)*hy
write(8,*) i,j+2*ny2,t(i,j,3),dsin(pi*x)*dsin(pi*(y+2.0_high*y2hy))
ENDDO
DO j=1,ny2
y=(j-0.5_high)*hy
write(8,*) i,j+3*ny2,t(i,j,4),dsin(pi*x)*dsin(pi*(y+3.0_high*y2hy))
end do
end do
close(8)
!
end program test_cps
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!