ALE ngeom

32 views
Skip to first unread message

Chunheng Zhao

unread,
Jul 6, 2025, 3:27:59 PMJul 6
to Nek5000
Hi Neks,

I have a question about the ALE implementation in Nek5000. I do not understand why we have to solve fluid(1) and fluid(2) when ngeom=2? 

For each igeom, we regenerate geometry, after which we solve fluid(igeom). Does that mean the data is allocated in each geom? like vx,vy,vz and p are allocated for each geom?

Thanks,
Chunheng.

Fischer, Paul

unread,
Jul 6, 2025, 4:56:21 PMJul 6
to Nek5000, Chunheng Zhao
Dear Chunheng,

The time derivative is pulled outside of the spatial inner product, and finite differences are used in time.

So you have, with beta_j being the set of BDFk coefficients for kth-order backward differences,

 d/dt (v,u) ~ (1/dt) [ beta_0 (v,u)|_\Omega_t^n
  + sum_j beta_j (v,u)|_\Omega_t^{n-j} ]

Because the domains are different at different times, the old geometry is used for the beta_1 (.,.)\Omega_{t^{n-1}} inner product and other RHS terms known at that time level.  (igeom=1)

Then the geometry is updated for all the implicit components, which are evaluated at time t^n (igeom=2).

You can find more in the 2017 paper A Characteristic-Based, Spectral Element Method for Moving-Domain Problems

hth,

Paul


From: 'Chunheng Zhao' via Nek5000 <nek...@googlegroups.com>
Sent: Sunday, July 6, 2025 2:27 PM
To: Nek5000 <nek...@googlegroups.com>
Subject: [nek5000] ALE ngeom
 
--
You received this message because you are subscribed to the Google Groups "Nek5000" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nek5000+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/nek5000/360d7048-4b1d-49fd-b193-8caed255cb3cn%40googlegroups.com.

Chunheng Zhao

unread,
Jul 6, 2025, 11:27:31 PMJul 6
to Nek5000
Thank you! So in general, if we only consider a simple first order back difference, then ngeom=1 is enough. I think in that case, for each step advance, we only need 
call gangeom(1)
call geneig(1)
call ..._solve
call meshv(1)

Is that correct? Or we may not need those functions for each step?

Chunheng.

Fischer, Paul

unread,
Jul 6, 2025, 11:53:22 PMJul 6
to Nek5000, Chunheng Zhao

No... you need ngeom = 2.

igeom=1 --> evaluate all terms on RHS at time t^{n-1}, on the old geometry

Igeom=2 --> evaluate all terms on LHS at time t^n.

hth,
Paul


From: 'Chunheng Zhao' via Nek5000 <nek...@googlegroups.com>
Sent: Sunday, July 6, 2025 10:27 PM
To: Nek5000 <nek...@googlegroups.com>
Subject: Re: [nek5000] ALE ngeom
 

Chunheng Zhao

unread,
Jul 9, 2025, 10:48:10 AMJul 9
to Nek5000
I see. So for igeom=1, the term: \sum_q^k  \beta_q * u(t-q), q=k,...1 is computed. and then we update the geometry, and compute the matrix for mass, convection, div, etc.

I still have some questions about the char_conv function.

let's consider nbd=2, for which we need u(t-2dt), and u(t-dt),  or we need the linear combination of two by the scheme shown in the paper,  dt is constant, and we have mvbd.

tau=time-2*dt
1. the int_vel function evaluate the mass matrix at tau=time-2*dt, bm(tau).

2. the p0 which is the linear combination of u(t-2dt) and u(t-dt). While it is computed by multiply bmlag(1), and bm. 
3. Initially, for ilag=nbd=2, p0=u(t-2dt)*bmlag(1)
4. for the RK4, the first step compute u1=p0/bm(tau), so u1=u(t-2dt)*bmlag(1)/bm(tau). This is confusing. If there is only one lag for mass matrix, is that for u(t-2dt)? and in that case shall we use the consistent mass matrix computed from int_vel, for tau? bmlag(1) = bm(tau)??
5. After all the loops, ilag =1, and the mass matrix is interpolated up to time, bm(time), then is bm is one time lag to bm(time), since it is multiplied to u(t-dt), and bm(time) is for current time. 
6. We finally updated p0 is combined two terms after the convection. In that case, how should we get the mass matrix for the current p0, is that bm(time)?
7. After all, we update the geometry, and bm, is the new bm just equal to bm(time) we computed from int_vel, and can we use the new bm to get the new u from p0 we obtained from char_conv? 

Thanks,
Chunheng.
Reply all
Reply to author
Forward
0 new messages