Guest User

Untitled

a guest
Apr 21st, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. complex function hintegrate(x0, x1, y0, y1, z0, z1, n, parx, pary, parz, m, t, p, f, gaussk, func, g, dgx, dgy, dgz)
  2.     use functions
  3.     real(8) :: x0, x1, y0, y1, z0, z1, n
  4.     real(8) :: parx, pary, parz
  5.    
  6.     real(8) :: m, t, p, f, gaussk
  7.    
  8.     real(8) :: stepx, x, px, xc, dx
  9.     real(8) :: stepy, y, py, yc, dy
  10.     real(8) :: stepz, z, pz, zc, dz
  11.     real(8) :: wx, wy, wz
  12.  
  13.     real(8) :: sinc, func, g, dgx, dgy, dgz
  14.  
  15.     complex I, fk
  16.  
  17.     stepx = (x1 - x0) / n
  18.     stepy = (y1 - y0) / n
  19.     stepz = (z1 - z0) / n
  20.        
  21.     px = x0
  22.     x = px + stepx
  23.    
  24.     py = y0
  25.     y = py + stepy
  26.    
  27.     pz = z0
  28.     z = pz + stepz
  29.    
  30.     I = 0
  31.     do while (x < x1)
  32.         do while(y < y1)
  33.             do while(z < z1)
  34.                 dx = x - px
  35.                 dy = y - py
  36.                 dz = z - pz
  37.                
  38.                 xc = (px + x) / 2
  39.                 yc = (py + y) / 2
  40.                 zc = (pz + z) / 2
  41.  
  42.                 wx = sinc(dgx(m, t, p, f, parx, pary, parz, xc, yc, zc)*dx)
  43.                 wy = sinc(dgy(m, t, p, f, parx, pary, parz, xc, yc, zc)*dy)
  44.                 wz = sinc(dgz(m, t, p, f, parx, pary, parz, xc, yc, zc)*dz)
  45.  
  46.                 fk = func(xc, yc, zc, gaussk) * cdexp((CMPLX(0,1) / h) * g(m, t, p, f, parx, pary, parz, xc, yc, zc))
  47.  
  48.                 I = I + dx * dy * dz * f * wx * wy * wz      
  49.                
  50.                 pz = z
  51.                 z = pz + stepz              
  52.                
  53.                 end do
  54.            
  55.             py = y
  56.             y = py + stepy        
  57.             end do
  58.        
  59.         px = x
  60.         x = px + stepx        
  61.         end do
  62.  
  63.     hintegrate = I
  64.     return    
  65. end function hintegrate
Add Comment
Please, Sign In to add comment