Advertisement
Guest User

Untitled

a guest
Oct 27th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Program refuerzo
  2.  
  3. real(8) Tm,Tc,Tf,k,Cp,rhol,f,k0,deltaH,rhoc,lx1,lx2, ly1, ly2, dx, dy, dt, r,phi1, phi2,kc1,kc2,E,phimax,g,rechupe,contraccion
  4. integer nx, ny, i, j, z, tiempofinal,ciclo,b,nodosl1,nodosl2
  5. real(8),allocatable, dimension (:,:)::T, AUXT,C
  6. real(8),allocatable,dimension(:)::VT,Ve
  7.  
  8. !---------------------variables Geometricas-----------------------------
  9. lx1=0.195/2;lx2=0.005
  10. ly1=0.005;ly2=0.005         !Dimensiones del refuerzo (en metros)
  11. dx=0.001; dy=0.001          !Distancia entre nodos(en metros)
  12. dt=1.
  13. tiempofinal=1000
  14.  
  15. nx=floor((2*lx1+lx2)/dx+0.5);
  16. ny=floor((ly1+ly2)/dy+0.5)  !Cantidad de nodos
  17. nx1=floor(lx1/dx+0.5);nx2=floor(lx2/dx+0.5)
  18. ny1=floor(ly1/dy+0.5);ny2=floor(ly2/dy+0.5)
  19.  
  20.  
  21.  
  22. !--------------------Variables de Proceso-------------------------------
  23. Tm=50+273                   !Temp molde (K)
  24. Tc=110+273                  !Temp cristalizacion(K)
  25. Tf=230+273                  !Temp Fundido(K)
  26.  
  27. k=0.46                      !Conduct termica(W/m.K)
  28. Cp=2475                     !(J/Kg.k)
  29. rhol=867                    !Densidad del liquido(Kg/m³)
  30.  
  31.  
  32. !--------------------Parametros de Abrami-------------------------------
  33. f=2.2506                    !Es el 'n' de abrami
  34. k0=3.014E9
  35. deltaH=188370               !delta de cristalizacion(J/Kg)
  36. rhoc=983                    !Densidad del solido(Kg/m³)
  37. E=14575                     !Energia de cristalizacion (J/mol)²
  38. phimax=0.31
  39.  
  40. r=k*dt/(rhol*Cp*dx**2)
  41.  
  42. allocate(T(ny,nx), AUXT(ny,nx),C(ny,nx))
  43. Call Forma1(T,Tc,Tf,nx,ny,nx1,nx2,ny1,ny2)
  44. Call GraficaForma(T,nx,ny)
  45. z=tiempofinal
  46. ciclo=0
  47. Do i=1,ny
  48.  do j=1,nx
  49.   C(i,j)=0.
  50.  end do
  51. end do
  52.  
  53. Do while (z==tiempofinal)
  54. AUXT(:,:)=T(:,:)
  55. ciclo=ciclo+1
  56. Do i=2, ny1-1
  57.  Do j=2, nx-1
  58.   T(i,j)=r*AUXT(i+1,j)+r*AUXT(i-1,j)+(-4*r+1)*AUXT(i,j)+r*AUXT(i,j+1)+r*AUXT(i,j-1)
  59.   if(T(i,j).le.Tc) then
  60.    if (C(i,j)==0.) then
  61.     kc2=k0*exp(-E/(8.314*(Tf-T(i,j))))
  62.     phi2=1-exp(-kc2*(dt*ciclo)**f)
  63.     C(i,j)=1.
  64.     end if
  65.   end if
  66.   if(phi2.le.phimax) then
  67.     kc1=k0*exp(-E/(8.314*(Tf-AUXT(i,j))))
  68.     phi1=1-exp(-kc1*(dt*(ciclo-1))**f)
  69.     g=(rhoc/(rhol*Cp))*deltaH*(phi2-phi1)
  70.     T(i,j)=T(i,j)+g
  71.   end if
  72.   end do
  73. end do
  74. Do i=ny1,ny-1  
  75.  Do j=nx1+1, (nx1+nx2)-1
  76.   T(i,j)=r*AUXT(i+1,j)+r*AUXT(i-1,j)+(-4*r+1)*AUXT(i,j)+r*AUXT(i,j+1)+r*AUXT(i,j-1)
  77.   if(T(i,j).le.Tc) then
  78.    if (C(i,j)==0) then
  79.     kc2=k0*exp(-E/(8.314*(Tf-T(i,j))))
  80.     phi2=1-exp(-kc2*(dt*ciclo)**f)
  81.     C(i,j)=1
  82.     end if
  83.   end if
  84.   if(phi2.le.phimax) then
  85.     kc1=k0*exp(-E/(8.314*(Tf-AUXT(i,j))))
  86.     phi1=1-exp(-kc1*(dt*(ciclo-1))**f)
  87.     g=(rhoc/(rhol*Cp))*deltaH*(phi2-phi1)
  88.     T(i,j)=T(i,j)+g
  89.   end if
  90.  end do
  91. end do
  92.  
  93. If ((T((floor((ny1/2)+0.5))+1,nx1))<= Tc) then
  94. Call GraficaForma(T,nx,ny)
  95. z=tiempofinal+1
  96. end if
  97. end do
  98.  
  99. nodosl1=0
  100. nodosl2=0
  101. Do i=2, ny1-1
  102.  Do j=2, nx-1
  103.     if(T(i,j)>Tc) then
  104.     nodosl1=nodosl1+1
  105.    
  106.   end if
  107.  end do
  108. end do
  109. Do i=ny1,ny-1  
  110.  Do j=nx1+1, (nx1+nx2)-1
  111.   if(T(i,j)>Tc) then
  112.  
  113.     nodosl2=nodosl2+1
  114.   end if
  115.  end do
  116. end do
  117. allocate(VT(nodosl1+nodosl2),Ve(nodosl1+nodosl2))
  118. open(unit=4, file='Temperaturas_nodos_liquidos.dat')
  119. b=1
  120. Do i=2, ny1-1
  121.  Do j=2, nx-1
  122.     if(T(i,j)>Tc) then
  123.     VT(b)=T(i,j)-273
  124.     write(4,'(F15.3)')VT(b)
  125.     b=b+1
  126.  
  127.   end if
  128.  end do
  129. end do
  130.  
  131.  
  132. Do i=ny1,ny-1  
  133.  Do j=nx1+1, (nx1+nx2)-1
  134.   if(T(i,j)>Tc) then
  135.     VT(b)=T(i,j)-273
  136.     write(4,'(F15.3)')VT(b)
  137.     b=b+1
  138.    
  139.   end if
  140.  end do
  141. end do
  142.  
  143. close(4)
  144.  
  145.  
  146.  
  147. Call Colorear(T,nx,ny)
  148. call system ("gnuplot -persist 'script.p'")
  149. rechupe=0.
  150. Ve=0.
  151. Call Calculodey(VT,nodosl1,nodosl2,Ve)
  152. Call Calcularechupe(nodosl1,nodosl2,rechupe,Ve)
  153. contraccion=100*rechupe/2000
  154.  
  155.   write(*,*) ny1, nx1, floor(ny1/2 +0.5),nodosl1,nodosl2,rechupe
  156.   write(*,*)'La contraccion volumetrica es',contraccion
  157.  
  158. Contains
  159.  
  160. Subroutine Forma1(T,Tc,Tf,nx,ny,nx1,nx2,ny1,ny2) !Esta subroutina arma la matriz de temperaturas con forma T
  161.   real(8) Tc,Tf
  162.   integer nx,ny,nx1,nx2,ny1,ny2
  163.   real(8),dimension(ny,nx)::T
  164.  
  165.   T(:,:)=Tm
  166.   T(2:ny/2,1)=Tc
  167.   T(2:ny/2,nx)=Tc
  168.   do i=2,ny/2
  169.     T(i,2:nx-1)=Tf
  170.   end do
  171.   do i=ny1,ny1+ny2-1
  172.     T(i,nx1+1:nx1+nx2-1)=Tf
  173.   end do
  174.  T(floor(ny/2+0.5),1:nx1)=Tm
  175.  T(floor(ny/2+0.5),(nx1+nx2):nx)=Tm
  176. end Subroutine
  177. Subroutine GraficaForma(T,nx,ny) !escribe la matriz forma en un archivo
  178.   integer nx,ny
  179.   real(8),dimension(ny,nx)::T
  180.  
  181.   open(unit=2, file='forma1.dat')
  182.   Do i=1,ny
  183.     Do j=1,nx
  184.       write(2,'(200F8.3)',advance='no')T(i,j)
  185.     end do
  186.     write(2,*)
  187.   end do
  188.   write(2,*)
  189.   Do i=1,nx
  190.     write(2,'(200I8)',advance='no') i
  191.   end do
  192.  
  193.   Close(2)
  194. end subroutine
  195.  
  196. Subroutine Colorear(T,nx,ny)
  197. integer i,j
  198. real(8)::T(ny,nx)
  199.  
  200. open(unit=3, file='grafico_de_temperaturas.dat')
  201. ! write(3,'(2A4,A15)')'x','y','Temperaturas'
  202.   Do j=1,nx
  203.    Do i=1,ny
  204.     write(3,'(2I4,F115.3)')j,i,T(i,j)
  205.     end do
  206.     write(3,*)
  207.    end do
  208.    Close(3)
  209. end subroutine
  210.  
  211. Subroutine Calcularechupe(nodosl1,nodosl2,rechupe,Ve)
  212. integer nodosl1,nodosl2,i
  213. real(8) rechupe,m,Vesolido
  214. real(8):: Ve(nodosl1+nodosl2)
  215.  
  216.  
  217. m=1                !gr
  218. Vesolido=1.0513    !cm³/gr
  219. rechupe=0.
  220. Do i=1,(nodosl1+nodosl2)
  221.  
  222. rechupe=Ve(i)*m-Vesolido*m+rechupe
  223.  
  224. end do
  225.  
  226. end subroutine
  227.  
  228.  
  229. Subroutine Calculodey (VT,nodosl1,nodosl2,Ve)
  230. integer nodosl1,nodosl2,i
  231. real(8):: VT(nodosl1+nodosl2),Ve(nodosl1+nodosl2)
  232. real(8) suma,suma2,suma3
  233.  
  234. do i=1,nodosl1+nodosl2
  235. suma=0.
  236. suma2=0.
  237. suma3=0.
  238. suma=-0.0000000000000000000407514*(VT(i)**10)+0.0000000000000000000000222233*(VT(i)**11)
  239. suma2=-1.75369+0.35938*VT(i)-0.0190579*(VT(i)**2)+0.00055385*(VT(i)**3)-0.00000984786*(VT(i)**4)
  240. suma3=0.000000113272*(VT(i)**5)+0.00000000000445019*(VT(i)**7)-0.0000000000000151411*(VT(i)**8)+0.0000000000000000327439*(VT(i)**9)
  241. Ve(i)=-0.00000000086681*(VT(i)**6)+suma+suma2+suma3
  242.  
  243. end do
  244. Write(*,*)'Los valor de volumen especifico es=',Ve
  245. end subroutine
  246.      
  247.  
  248. End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement