[CIG-MC] internal vbcs in CitcomS

Shijie Zhong shijie.zhong at Colorado.EDU
Wed Jul 24 13:03:26 PDT 2013

Hi Dan,

In principle, none of get_bcs_id_for_residual() and construct_id() would affect the convergence, because they only affect the value of the global norm of residual, not the convergence. 

It is probably still related to 1) how NODE array is set up and 2) how the multigrid solver works together with the internal nodes on which you specified velocities. Since you said that you are quite confident with NODE array, the trouble could be with 2) which is quite tricky, given that at different level of grid, you want that the internal nodes are represented somewhat (ideally), so that the smoothing/projection between different levels does not suddenly jump from seeing the internal nodes to not. 

As a first step, I suggest that you switch on conj-grad solver to see what happens. In this way, you can narrow on the cause of the troubles.



Shijie Zhong, Professor
Department of Physics
University of Colorado at Boulder
Boulder, CO 80309
Tel: 303-735-5095; Fax: 303-492-7935
Web: http://anquetil.colorado.edu/szhong
From: cig-mc-bounces at geodynamics.org [cig-mc-bounces at geodynamics.org] On Behalf Of tan2 [tan2tan2 at gmail.com]
Sent: Tuesday, July 23, 2013 8:07 PM
To: cig-mc at geodynamics.org
Subject: Re: [CIG-MC] internal vbcs in CitcomS


You will need to call construct_id() after step (2) to update the id array as well.


On Tue, Jul 23, 2013 at 11:22 AM, Dan Bower <dan at caltech.edu<mailto:dan at caltech.edu>> wrote:

I have a CitcomS developer question relating to internal velocity
boundary conditions.  Broadly speaking, this is what I am doing (for
each timestep):

(1) read in internal velocity bcs from file
(2) update NODE[level][m][nodel] (turning VBs on, SBs off).  This
requires a bit of work to be consistent with the multigrid solver, but
I think I have that sorted.
(3) recall 'get_bcs_id_for_residual' to update zero_resid[level][m][j]
and E->num_zero_resid[level][m]

This algorithm appears to work well for simple regional cases (simple
meaning, e.g., applying internal velo bcs to a line of nodes at a
fixed depth).  For global cases, with a more complicated distribution
of internal bcs, the solver does not converge (I'm testing with an
isoviscous model to keep it simple), e.g.:

Momentum equation force 9.832610840e+04
 *  residual (050) = 5.075e+04 from 9.833e+04 to 4.916e+02 in 71.19 secs
Warning: solver not converging! 0
(000)  71.3 s v=1.245233e+04 p=0.000000e+00 div/v=1.72e+01
dv/v=1.00e+00 dp/p=1.00e+00 step 0
 *  residual (050) = 1.313e+03 from 4.688e+04 to 4.916e+02 in 71.37 secs
Warning: solver not converging! 1
(001) 142.7 s v=7.169507e+03 p=4.552888e+05 div/v=6.55e+00
dv/v=1.26e+00 dp/p=1.00e+00 step 0
 *  residual (050) = 1.661e+06 from 2.424e+04 to 4.916e+02 in 71.74 secs
Warning: solver not converging! 1

Therefore, I have a couple of questions:

(1) I am missing something from my algorithm in 1-3 above?

(2) Does anyone have any guiding principles in applying internal
velocity bcs such that a solver (particularly the multigrid in
CitcomS) will converge?

Thanks in advance for any suggestions,

CIG-MC mailing list
CIG-MC at geodynamics.org<mailto:CIG-MC at geodynamics.org>

More information about the CIG-MC mailing list