[Nek5000-users] **ERROR**: Failed in HMHOLTZ

nek5000-users at lists.mcs.anl.gov nek5000-users at lists.mcs.anl.gov
Tue Jan 19 08:22:55 CST 2010


> The calculation also works if I'm only setting p94 to zero (projection of the velocity)...
Sure, as I said the problem there is a problem with the residual projection if Helmholtz iterations are zero. 
Typically you'll get more then zero iterations in a real calculation and this problem does not show up. Anyway we'll provide a fix addressing this issue soon.

Thx
Stefan


On Jan 19, 2010, at 3:06 PM, nek5000-users at lists.mcs.anl.gov wrote:

> Here my usr-file. For some tests I'm using a fixed driving force ffz and calculate my u_bar in every timestep (subroutine calc_ubar).
> 
> The calculation also works if I'm only setting p94 to zero (projection of the velocity)...
> 
> What do you mean by "what happens if you integrate for say 1 flow-through time"??
> 
> 
> 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)
>     include 'SIZE'
>     include 'TOTAL'
>     include 'NEKUSE'
> 
>     integer e,f,eg
> c     e = gllel(eg)
> 
>     udiff  = 0.0
>     utrans = 0.0
> 
>     return
>     end
> c-----------------------------------------------------------------------
>     subroutine userf  (ix,iy,iz,eg)
> 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'
> 
>     integer e,f,eg
> c     e = gllel(eg)
> 
>     ffx = 0.0
>     ffy = 0.0
>     ffz = 0.05
> 
>     return
>     end
> c-----------------------------------------------------------------------
>     subroutine userq  (ix,iy,iz,eg)
>     include 'SIZE'
>     include 'TOTAL'
>     include 'NEKUSE'
> 
>     integer e,f,eg
> c     e = gllel(eg)
> 
>     qvol   = 0.0
>     source = 0.0
> 
>     return
>     end
> c-----------------------------------------------------------------------
>     subroutine userchk
>     include 'SIZE'
>     include 'TOTAL'
>     include 'ZPER'  ! for nelx,nely,nelz
> 
>     call calc_ubar(vz,1.0)
> 
>     return
>     end
> c-----------------------------------------------------------------------
>     subroutine userbc (ix,iy,iz,iside,ieg)
>     include 'SIZE'
>     include 'TOTAL'
>     include 'NEKUSE'
> 
>     ux   = 0.0
>     uy   = 0.0
>     uz   = 0.0
>     temp = 0.0
> 
>     return
>     end
> c-----------------------------------------------------------------------
>     subroutine useric (ix,iy,iz,ieg)
>     include 'SIZE'
>     include 'TOTAL'
>     include 'NEKUSE'
> 
>     ux   = 0.0
>     uy   = 0.0
>     uz   = (1-(y-0.5)**2)
>     temp = 0.0
> 
>     return
>     end
> c-----------------------------------------------------------------------
>     subroutine usrdat   ! This routine to modify element vertices
>     include 'SIZE'
>     include 'TOTAL'
> 
>     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-----------------------------------------------------------------------
>     subroutine calc_ubar(u,idir)  ! driving force for Ubar = 1
> 
>     include 'SIZE'
>     include 'TOTAL'
> 
>     common /uforce/ utldo(ldim)
> 
>     n=nx1*ny1*nz1*nelv
> 
>     if (istep.eq.0) f_new=param(71)  ! Update forcing for Ubar = 2
> 
>     ubar    = glsc2(u,bm1,n)/volvm1
> 
>     open(unit=10,file='u_bar.out')
>     write(10,*) ubar,ISTEP,TIME
> 
>     return
>     end
> 
> 
> 
> _______________________________________________
> 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