[Nek5000-users] Element connectivity information

nek5000-users at lists.mcs.anl.gov nek5000-users at lists.mcs.anl.gov
Wed Mar 14 17:23:50 CDT 2012


Dear Outi,

Can you tell me a bit more about the Arnoldi solver? (I know
about the method.  Here, I mean the specific source code that
you are using, what the interface to the code is, etc.)

Best regards,

Paul


On Wed, 14 Mar 2012, nek5000-users at lists.mcs.anl.gov wrote:

> Hi Paul,
>
> Thank you for a quick response.
> My current understanding is that the error occurs since Arnoldi treats the 
> velocities in the duplicated points as separate degrees of freedom (which 
> they are not in Nek5000, since they come out always equal).
> So, therefore I am not so sure that a weighting operation would remove the 
> problem.
> Anyway, I will test what you suggest in a few cases and tell you how it comes 
> out.
>
> But if it turns out that counting the points once is the only option 
> (asymmetrically, as you point out), is it possible to do this?
> (Another option is always that I make changes inside the Arnoldi algorithm, 
> but this might be a bit more elaborate.)
>
> Thanks a lot,
>
> Outi
>
> 14 Mar 2012 kl. 13:40 skrev nek5000-users at lists.mcs.anl.gov:
>
>> 
>> 
>> Hi Outi,
>> 
>> We encounter this problem all the time in conjugate gradient
>> and gmres iteration.
>> 
>> For reasons of symmetry (and, hence, commutativity and associativity,
>> which are two essential ingredients for parallel execution), I would
>> suggest that you not try to store the data only once, but rather
>> scale by the inverse counting-matrix (aka, multiplicity), so that interface 
>> points are not counted twice when computing your inner
>> products.
>> 
>> The inverse counting-matrix is stored in vmult() and tmult().  A
>> typical application is:
>>
>>     alpha = glsc3(vx,vmult,vx,n)   (n=nx1*ny1*nz1*nelv)
>> 
>> which gives the l2 inner product:  alpha := sum_i (vx_i)^2 for a vector VX.
>> 
>> Note that if you instead want the L2 inner product
>>
>>     alpha = \int_Omega (vx)^2 dV
>> 
>> you would compute this as:
>>
>>     alpha = glsc3(vx,bm1,vx,n)
>>
>>           = vx^T B vx
>> 
>> which is the inner product of vx with the (diagonal) mass matrix B.
>> 
>> If you want the average of the physical rms (say), it would be:
>> 
>>
>>     alpha = glsc3(vx,bm1,vx,n)
>>     if (alpha.gt.0) alpha = sqrt(alpha/volvm1)
>> 
>> 
>> etc.
>> 
>> In summary, for linear algebra, use vmult(). For physics, use bm1()
>> (B, on Mesh 1).
>> 
>> 
>> Please let me know if this help to resolve your problem.
>> 
>> Best regards,
>> 
>> Paul
>> 
>> 
>> 
>> On Wed, 14 Mar 2012, nek5000-users at lists.mcs.anl.gov wrote:
>> 
>>> Hi Neks,
>>> 
>>> I am using Nek5000 coupled to an Arnoldi algorithm for hydrodynamic 
>>> stability computations. In these, I form a vector of the velocities, which 
>>> I regularly pass to the Arnoldi solver. Then, a new velocity vector is 
>>> formed which is passed back to Nek5000.
>>> 
>>> Now, the code works as it is, but in addition to the physical modes it 
>>> produces some spurious modes, which I think originate from the fact that 
>>> the velocities at the element-common boundaries are accounted for twice. 
>>> To fix this, I need to access the element connectivity information. Can 
>>> you please guide me to in which variable this is stored?
>>> 
>>> In particular, this is what I would like to do:
>>> -  add the element-common points to the local vector only for one of two 
>>> adjacent elements (and for a corner point, only one of the four elements 
>>> adjacent to it).
>>> - for the vector that Arnoldi returns, make sure that the new values of 
>>> the velocity are inserted also for the other adjacent element(s).
>>> 
>>> Thanks a lot in advance!
>>> Outi
>>> 
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> 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
>
> _______________________________________________
> 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