C----------------------------------------------------------------------- C nek5000 user-file template C C user specified routines: C - userbc : boundary conditions C - useric : initial conditions C - uservp : variable properties C - userf : local acceleration term for fluid C - userq : local source term for scalars C - userchk: general purpose routine for checking errors etc. C C----------------------------------------------------------------------- subroutine uservp(ix,iy,iz,eg) ! set variable properties include 'SIZE' include 'TOTAL' include 'NEKUSE' common /cdsmag/ ediff(lx1,ly1,lz1,lelv) ie = gllel(ieg) udiff = ediff(ix,iy,iz,ie) utrans = 1. return end c----------------------------------------------------------------------- subroutine userf(ix,iy,iz,eg) ! set acceleration term c c Note: this is an acceleration term, NOT a force! c Thus, ffx will subsequently be multiplied by rho(x,t). c include 'SIZE' include 'TOTAL' include 'NEKUSE' return end c----------------------------------------------------------------------- subroutine userq(ix,iy,iz,eg) ! set source term include 'SIZE' include 'TOTAL' include 'NEKUSE' return end c----------------------------------------------------------------------- subroutine userq2(q) ! set source term include 'SIZE' include 'TOTAL' include 'NEKUSE' return end c----------------------------------------------------------------------- subroutine userbc(ix,iy,iz,iside,ieg) ! set up boundary conditions c NOTE ::: This subroutine MAY NOT be called by every process include 'SIZE' include 'TSTEP' include 'NEKUSE' if(iside==5) then if(ieg>ielexy) print *,'CHECK 1' ux = 0.0d0 uy = 0.0d0 uz = 0.0d0 end if if(iside==1) then if(ieg<=ielexy*142) print *,'CHECK 2' ux = 0.0d0 uy = 0.042d0 uz = 0.0d0 end if return end c----------------------------------------------------------------------- subroutine useric(ix,iy,iz,ieg) ! set up initial conditions include 'SIZE' include 'TOTAL' include 'NEKUSE' return end c----------------------------------------------------------------------- subroutine userchk() include 'SIZE' include 'TOTAL' include 'ZPER' include 'CTIMER' include 'RESTART' character*132 sourcefld sourcefld='source.f00001' call gfldr(sourcefld) call outpost(vx,vy,vz,pr,t,'rst') call exitt() return end c----------------------------------------------------------------------- subroutine usrdat() ! This routine to modify element vertices include 'SIZE' include 'TOTAL' parameter (ielx=150) parameter (iely=22) parameter (ielz=142) integer i,e,eg,ex,ey,ez real cony cony = 2.36d0 do e=1,nelv eg = lglel(e) if(eg<=ielx*iely*ielz) then call get_exyz(ex,ey,ez,eg,ielx,iely,ielz) do i=1,8 if(i<=2 .or. i==5 .or. i==6) then if((yc(i,e)>0.0e0.and.yc(i,e)<1.0e0).OR. & (yc(i,e)>1.0e0.and.yc(i,e)<2.0e0)) then yc(i,e) = 2.0e0*Real(ey-1)/Real(iely) end if else if(i==3 .or. i==4 .or. i>=7) then if((yc(i,e)>0.0e0.and.yc(i,e)<1.0e0).OR. & (yc(i,e)>1.0e0.and.yc(i,e)<2.0e0)) then yc(i,e) = 2.0e0*Real(ey)/Real(iely) end if end if end do end if end do do e=1,nelv eg = lglel(e) if(eg==1) print*,yc(1,e),yc(2,e),yc(5,e),yc(6,e) if(eg==1) print*,yc(3,e),yc(4,e),yc(7,e),yc(8,e) do i=1,8 if(yc(i,e)>0.0e0 .AND. yc(i,e)<1.0e0) then yc(i,e) = yc(i,e)-1.0e0 yc(i,e) = tanh(cony*yc(i,e))/tanh(cony) yc(i,e) = yc(i,e)+1.0e0 else if(yc(i,e)>1.0e0 .AND. yc(i,e)<2.0e0) then yc(i,e) = yc(i,e)-1.0e0 yc(i,e) = tanh(cony*yc(i,e))/tanh(cony) yc(i,e) = yc(i,e)+1.0e0 end if end do end do return end c----------------------------------------------------------------------- subroutine usrdat2() ! This routine to modify mesh coordinates include 'SIZE' include 'TOTAL' return end c----------------------------------------------------------------------- subroutine usrdat3() include 'SIZE' include 'TOTAL' return end c-------------------------------------------------------------------- c c automatically added by makenek subroutine usrsetvert(glo_num,nel,nx,ny,nz) ! to modify glo_num integer*8 glo_num(1) return end