[Nek5000-users] pressure normalisation in periodic flows

nek5000-users at lists.mcs.anl.gov nek5000-users at lists.mcs.anl.gov
Fri Feb 24 12:42:21 CST 2012


Dear Philipp,

Thank you for your email.  I think I understand the issue... Without
yet verifying it, my guess is that we never explicitly orthogonalize
p itself, but only dp and thus if there is somehow drift in the mean
of p it is not corrected.

At this point, this is just a hypothesis... I'll try to verify.

Best regards,

Paul


On Fri, 24 Feb 2012, nek5000-users at lists.mcs.anl.gov wrote:

>
> Dear Paul,
>
> Thank you for your reply. In regards to the pressure normalization we
> have tested the following:
>
> 1- Starting from restart files containing the high-pressure values (of
> order 10^7). A run was performed for 53 time-steps and in the USERCHK,
> we have normalized the pressure as follows:
>
> ----------------------------------------------------------------------------
>
> C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%C
>      common /scrcg/ pm1(lx1,ly1,lz1,lelv)  ! Mapped pressure
>      real pa(lx1,ly1,lz1), pb(lx1,ly1,lz1) ! Working arrays for mapp
>      integer*8 ntotpg   ! Possibly more than 2 billion pts total
> C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%C
>
>      call my_full_restart  ! save/load files for full-restart
>
>      ntotp    =  nelv*nx2*ny2*nz2
>      ntotpg   =  ntotp
>      ntotpg   =  i8glsum(ntotpg,1)          ! Input must be integer*8
>      pbar_alg =  glsum(pr,ntotp)/ntotpg
>      pbar_phy = -glsc2(pr,bm2,ntotp)/volvm2
>      call cadd(pr,pbar_phy,ntotp)
>
> ----------------------------------------------------------------------------
>
> After the run ended, the pressure values were around zeros. For
> several runs after-wards with the above procedure in the USERCHK taken
> away. The pressure was fine and it didn't spike again.
>
> Meanwhile:
>
> 2-   Starting from the same set of files  (containing the high-pressure 
> values). A run was performed for 153 time-steps with no pressure 
> normalization in the USERCHK as before. Here, we looked at the
>
> subroutine ortho (respr)
>
> in navier1.f and printed out the values of respr,rlam.  These were of order 
> 1E-07 and E-012. However, during the run the pressure was high, and this was 
> noticed by printing out (pr) in the USERCHK where the values were of order 
> 10^7.
>
> Best regards
>
> George
>
>
> Quoting nek5000-users at lists.mcs.anl.gov:
>
>> 
>> Dear Philipp,
>> 
>> Thank you for the detailed note.
>> 
>> The normal way to orthogonalize would be:
>>
>>      call ortho(pr)
>> 
>> One has to be careful in this context since there are two
>> types of orthogonalization to consider.  One is where you
>> remove the kernel of the pressure matrix (i.e., the vector
>> of all 1's), the other is where you remove the physical
>> mean.  These values are defined as follows:
>>
>>    pbar_alg = sum_i=1,n (p_i) / n
>>
>>    pbar_phy = int p dV / volume
>> 
>> Currently, ortho() does the former, since that is the
>> condition we are trying to satisfy in the iterative solvers.
>> Which condition is best for you is not 100% clear to me, but
>> it is probably a fine point that is not of leading-order
>> importance.  In any case, you can evaluate these as follows:
>>
>>      include 'SIZE'
>>      include 'TOTAL'
>>
>>      integer*8 ntotpg   ! Possibly more than 2 billion pts total
>>
>>      ntotp  = nelv*nx2*ny2*nz2
>>      ntotpg = ntotp
>>      ntotpg = i8glsum(ntotpg,1)          ! Input must be integer*8
>>      pbar_alg = glsum(pr,ntotp)/ntotpg
>>
>>      pbar_phy = glsc2(pr,bm2,ntotp)/volvm2
>> 
>> What is more curious is, why is the pressure spiking?
>> If you have a repeatable case where this happens, I'd
>> be happy to dig into it.  Please feel free to contact
>> me off-list if you'd like to transfer some files.
>> 
>> I'm happy to hear that the new restart feature avoids
>> this problem.
>> 
>> Best regards,
>> 
>> Paul
>> 
>> 
>> 
>> 
>> On Tue, 21 Feb 2012, nek5000-users at lists.mcs.anl.gov wrote:
>> 
>>> Dear all,
>>> We are running turbulent pipe flow. During these runs we have observed 
>>> some
>>> interesting behaviour of the instantaneous pressure, namely its mean value
>>> can be of order 10e7 depending on the run. We have tried various ways to
>>> bring that mean instantaneous pressure down to around zero, but we only
>>> succeeded partially. Of course, for computing the flow statistics (such as
>>> <p> and prms) we do have an additional normalisation based on the mean 
>>> wall
>>> pressure, but having such a high "computational" pressure may lead to loss
>>> of precision which we would like to avoid.
>>> 
>>> Therefore, we have a few questions which we tried to figure out during the
>>> last weeks:
>>> 1) from the Deville, Fischer and Mund book (and previous channel
>>> experiences) we assume that nek5000 will in the case of periodic bc (that 
>>> is
>>> without any "O" condition) set the mean instantaneous pressure to zero. 
>>> For
>>> some of our runs this is most probably fulfilled (checked only
>>> graphically...). Which routine would you suggest to use to do a volume
>>> average of the pressure (pnpn-2)?
>>> 2) Some of our runs were initially ran using the older restart scheme with
>>> only a single field/single precision. Since a few weeks we are exclusively
>>> using the newer restart option with four previous fields/double precision.
>>> The runs that were originally run with the old restart option are the ones
>>> that experience the high pressure values, whereas the cases that were only
>>> run (i.e. from the initiation with random noise) with the new restart have
>>> "correct" pressure levels (i.e. around zero).
>>> We would like to reduce the high pressures from the older runs. We have
>>> tried many things; subtracting a mean pressure in userchk, removing the 
>>> wall
>>> pressure during the run etc., but none of these options completely solved
>>> our issue (i.e. the pressure was rising again). Would there be an option 
>>> to
>>> restart nek without specifying a pressure?
>>> 3) To learn more about how nek is really doing the normalisation, which 
>>> part
>>> of the code is doing the p-normalisation?
>>> 
>>> By the way, we are using PnPn-2, mainly because our experience is that we
>>> are faster for our case.
>>> 
>>> Thanks a lot for any help!
>>> Philipp
>>> 
>>> _______________________________________________
>>> 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
>> 
>
>
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
> _______________________________________________
> 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