[Nek5000-users] opdiv and multd

nek5000-users at lists.mcs.anl.gov nek5000-users at lists.mcs.anl.gov
Sun Feb 10 12:11:15 CST 2013


Howdy Nek's,

I have a question regarding axhelm (and other routines likes ophinv).

Paul wrote:

*"As an example, axhelm does not multiply by the (negative) Laplacian.
Instead, it creates (for h1==1, h2==0):
* *
   w = A * u
* *
     = grad^T B grad u
* *
where B is the mass matrix."
*

So basically if (h1==1,h2==0), you only need to multiply by the inverse of
the mass matrix to get laplacian(u) (+ some direct stiffness sumation). Am
I right?
What about if h1==0 and h2==1? What does axhelm return in this case?

Same question about ophinv:

subroutine ophinv (out1,out2,out3,inp1,inp2,inp3,h1,h2,tolh,nmxi)
C----------------------------------------------------------------------
C
C     OUT = (H1*A+H2*B)-1 * INP  (implicit)

I presume that if (h1==1,h2==0), it solves: laplacian(out) = input. Is that
right? What about (h1==0,h2==1) again?

Regards and happy chinesse new year!

2010/12/14 <nek5000-users at lists.mcs.anl.gov>

> dssum() is just a wrapper for call gs_op() which takes only the input
> field from the dssum call. But I agree in general it's a good idea to call
> all subroutines with the correct arguments.
>
> -Stefan
>
>
>
>
>
> ----- Original Message -----
> From: nek5000-users at lists.mcs.anl.gov
> To: nek5000-users at lists.mcs.anl.gov
> Sent: Tuesday, December 14, 2010 6:50:15 PM
> Subject: Re: [Nek5000-users] opdiv and multd
>
> Sorry i have to do a correction.
>
> A user point it out that the subroutine is defined as dssum(u,nx,ny,nz)
> in dssum.f .
> Thus it should be called  with 4 arguments :
>
>       call dssum(RES(1),nx1,ny1,nz1)
>
> This did not give me problems and it seems to me that nx,ny,nz are not
> used.
> But it is better to be aware of it since i do not know how the compiler
> will read the wrong call.
>
> Sorry about that.
> francesco
>
>
>
>
> On 12/08/2010 04:02 PM, nek5000-users at lists.mcs.anl.gov wrote:
> >
> > Thanks Francesco!
> >
> > Paul
> >
> >
> > On Wed, 8 Dec 2010, nek5000-users at lists.mcs.anl.gov wrote:
> >
> >> Thank you Paul,
> >> that solved the problem.
> >>
> >> The correct result is obtained by :
> >>      call multd (RES(1),vx,rym2,sym2,tym2,2,iflg)
> >>      call dssum(RES(1))
> >>      call col2(RES(1),binvm1,lt)
> >>
> >> francesco
> >>
> >>
> >>
> >> On 12/08/2010 02:17 PM, nek5000-users at lists.mcs.anl.gov wrote:
> >>>
> >>> Hi Francesco,
> >>>
> >>> Several of the routines internal to nek are the so-called weak
> >>> derivatives, implying that they somehow involve the mass matrix
> >>> or the transpose of the operator, so it takes a bit of investigation
> >>> to understand precisely what each operator is doing.  (Note that the
> >>> functionality also differs slightly between PN-PN and PN-PN-2
> >>> formulations.)
> >>>
> >>> As an example, axhelm does not multiply by the (negative) Laplacian.
> >>> Instead, it creates (for h1==1, h2==0):
> >>>
> >>>    w = A * u
> >>>
> >>>      = grad^T B grad u
> >>>
> >>> where B is the mass matrix.
> >>>
> >>> Similarly, opdiv is most likely returning   d = B*grad u (or perhaps
> >>> the negative of this).     Moreover, d is returned on the pressure
> >>> mesh (mesh 2), which is the same as the velocity mesh (mesh 1) for
> >>> the PN-PN formulation that you use.
> >>>
> >>> In Nek, the mass matrix is diagonal and the mesh 1 inverse is stored
> >>> in binvm1.  It seems probable that you'll get the correct result
> >>> after
> >>>
> >>>       call col2(d,binvm1,n)
> >>>
> >>> where d holds the output of opdiv and n is the number of points on
> >>> mesh 1, assuming you're using PN-Pn.
> >>>
> >>> Paul
> >>>
> >>>
> >>>
> >>> On Wed, 8 Dec 2010, nek5000-users at lists.mcs.anl.gov wrote:
> >>>
> >>>> Hi all,
> >>>>
> >>>> I am having some problems using the subroutines opdiv and multd.
> >>>> For some reasons they do not give me correct results.
> >>>> Do they need any special treatment or precautions?
> >>>>
> >>>> I was trying to compute the divergence of a 3D field, and i
> >>>> realized that in my case the multd subroutine used
> >>>> by opdiv does not gives good results, while the same derivative
> >>>> computed from gram1 gives no problems.
> >>>>
> >>>> For example, I overwrite an analytical field :
> >>>>
> >>>>         ...
> >>>>         parameter(lt=lx1*ly1*lz1*lelt)
> >>>>         real       Res(lt)
> >>>>         ...
> >>>>                    vx(i,j,k,e)=   1.0*sin(x)*cos(y)*cos(z)
> >>>>         ...
> >>>>             call print_line(vx)
> >>>>         ...
> >>>>         iflg = 1
> >>>>         call multd (RES(1),vx,rym2,sym2,tym2,2,iflg)
> >>>>            call print_line(Res(1) )
> >>>>
> >>>>        call gradm1(work1,Res(1),work2,vx)
> >>>>            call print_line(Res(1) )
> >>>>         ...
> >>>>         if (lx2.ne.lx1) then
> >>>>         ...
> >>>>         STOP
> >>>>         endif
> >>>>
> >>>>
> >>>> and  print output a (xr,:,zr) the result  (performed by print_line) .
> >>>> In vxi.eps i compare the result (lines) with the analytical
> >>>> solution( symbols). The result of multd is not correct while all
> >>>> the others match perfectly the analytical solution.
> >>>> In vxy.eps i plot only the result of multd. Note that on y i have
> >>>> 12 elements the same number of peaks of the solution.
> >>>>
> >>>> Does anybody have an idea on how to fix this?
> >>>>
> >>>> Thank you very much for any help or suggestion
> >>>>
> >>>> francesco
> >>>>
> >>>>
> >>>>
> >>>>
> >>> _______________________________________________
> >>> 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
> >
>
> _______________________________________________
> 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
>



-- 
Jean-Christophe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/nek5000-users/attachments/20130210/7ff9f9eb/attachment.html>


More information about the Nek5000-users mailing list