[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