[Nek5000-users] opdiv and multd
nek5000-users at lists.mcs.anl.gov
nek5000-users at lists.mcs.anl.gov
Tue Dec 14 12:07:29 CST 2010
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
More information about the Nek5000-users
mailing list