[Nek5000-users] New code+recycling BC

nek5000-users at lists.mcs.anl.gov nek5000-users at lists.mcs.anl.gov
Mon May 3 10:28:04 CDT 2010


Can you dump a field file including the geometry and then visualize it using VisIt (your metadata file should only contain one single fld). Is it still messed up?

Stefan  


On May 3, 2010, at 5:24 PM, nek5000-users at lists.mcs.anl.gov wrote:

> Markus,
> 
> is it only a viz issue or do you have some problems in Nek after upgrading to the latest release.
> 
> Stefan
> 
> 
> On May 3, 2010, at 4:25 PM, nek5000-users at lists.mcs.anl.gov wrote:
> 
>> Hi,
>> 
>> when updating the code from rev. 404 (oldvel.png) to 503
>> (newvel.png), I realized a problem with the recycling
>> (periodic) boundary condition for a channel simulation I am doing -
>> compare the attached pictures of velocity on the inflow plane (the inflow is the Y/Z plane). For the two cases, SIZE/SIZEu, .rea, the restart step and .usr are the exact same.
>> 
>> Here are the relevant pieces from .usr. Have any of the functions
>> changed or am I doing something wrong? It seems as if the element
>> ordering is not what it was before.
>> I did this based on the jet example.
>> 
>> Thanks,
>> Markus
>> 
>> 
>> c-----------------------------------------------------------------------
>>      subroutine userbc (ix,iy,iz,iside,eg)
>>      include 'SIZE'
>>      include 'TOTAL'
>>      include 'NEKUSE'
>> 
>>      common /cvelbc/ uin(lx1,ly1,lz1,lelv)
>>     $              , vin(lx1,ly1,lz1,lelv)
>>     $              , win(lx1,ly1,lz1,lelv)
>>     $              , tin(lx1,ly1,lz1,lelv)
>> 
>>      integer e,eg
>> 
>>      e = gllel(eg)
>> 
>>      ux=uin(ix,iy,iz,e)
>>      uy=vin(ix,iy,iz,e)
>>      uz=win(ix,iy,iz,e)
>> .
>> ....
>> 
>> c-----------------------------------------------------------------------
>>      subroutine userchk
>>      include 'SIZE'
>>      include 'TOTAL'
>>      include 'ZPER'  ! for nelx,nely,nelz
>>      include 'RESTART' !Needs to be here for prepost to work
>>      common /cvlmsk/ vlmsk(lx1,ly1,lz1,lelt),vvol,
>>     &                wt(lx1*ly1*lz1,lelt),vol_per
>> 
>>      integer e,f,eg,ninx,niny,ninz
>> 
>> .c-----Computations for recycling BC
>>      speed = glsc2(vx,wt,n)/vol_per ! Where vol_per is the volume of
>> the recycling box
>>      starg = 1.0
>>      addtemp = 1.0
>>      call set_inflow(starg,speed,addtemp)   ! set up inflow BCs
>> .
>> ....
>> 
>> c-----------------------------------------------------------------------
>>      subroutine set_inflow(starg,speed,addtemp)   ! set up inflow BCs
>> 
>>      include 'SIZE'
>>      include 'TOTAL'
>> 
>>      integer icalld,e,eg,f
>>      save    icalld
>>      data    icalld /0/
>> 
>>      common /cvelbc/ uin(lx1,ly1,lz1,lelv)
>>     $              , vin(lx1,ly1,lz1,lelv)
>>     $              , win(lx1,ly1,lz1,lelv)
>>     $              , tin(lx1,ly1,lz1,lelv)
>> 
>>      common /scruz/  ptr(lx1,ly1,lz1,lelv)
>>      integer ptr,gs_bc_hndl
>>      save        gs_bc_hndl
>> 
>>      real ratio
>>      save ratio
>>      data ratio / 1. /
>> 
>>      common /nekmpi/ mid,mp,nekcomm,nekgroup,nekreal
>> 
>>      n = nx1*ny1*nz1*nelv
>> 
>>      if (icalld.eq.0) then
>>         icalld = 1
>>         nxyz = nx1*ny1*nz1
>> 
>>         do e=1,nelv
>>            eg = lglel(e)
>>            eo = nxyz*(eg-1)    ! offset
>>            do i=1,nxyz
>>               ptr(i,1,1,e) = i+eo
>>            enddo
>> 
>>            do k=2,nz1-1        ! get rid of interior pointers
>>            do j=2,ny1-1            do i=2,nx1-1
>>               ptr(i,j,k,e) = 0
>>            enddo
>>            enddo
>>            enddo
>> 
>>            nface = 2*ndim
>>            do f=1,nface        ! connect inflow to elems downstream
>>               ioff = nxyz*8    ! 5 elements in X to end of "periodic" sec.
>>               if (cbc(f,e,1).eq.'v  ') then
>>                 call iface_add(ptr,f,e,ioff,nx1,ny1,nz1)
>>               endif
>>            enddo
>> 
>>         enddo
>> 
>>         call gs_setup(gs_bc_hndl,ptr,n,nekcomm,np) ! connect v +
>> downstream
>> 
>>      endif
>> 
>>      call copy(uin,vx,n)
>>      call copy(vin,vy,n)
>>      call copy(win,vz,n)
>>      call copy(tin,t,n)
>> 
>>      call col2(uin,v1mask,n)
>>      call col2(vin,v2mask,n)
>>      call col2(win,v3mask,n)
>>      call col2(tin,tmask,n)
>> 
>>      call gs_op(gs_bc_hndl,uin,1,1,0)  ! 1 ==> +  ! uin(inflow) =
>> vx(slab_k)
>>      call gs_op(gs_bc_hndl,vin,1,1,0)  ! 1 ==> +
>>      call gs_op(gs_bc_hndl,win,1,1,0)  ! 1 ==> +
>>      call gs_op(gs_bc_hndl,tin,1,1,0)  ! 1 ==> +
>> 
>>      if (speed.gt.0) then
>>         ratio = .5*(starg/speed + ratio)
>>         call cmult(uin,ratio,n)
>>         call cmult(vin,ratio,n)
>>         call cmult(win,ratio,n)
>>         call cadd(tin,addtemp,n) !Substract added heat
>>      endif
>> 
>>      return
>>      end
>> 
>> 
>> 
>> <oldvel.png><newvel.png>_______________________________________________
>> Nek5000-users mailing list
>> Nek5000-users at lists.mcs.anl.gov
>> https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users
> 
> _______________________________________________
> Nek5000-users mailing list
> Nek5000-users at lists.mcs.anl.gov
> https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users




More information about the Nek5000-users mailing list