URI: 
       tREADME.md - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
  HTML git clone git://src.adamsgaard.dk/pism
   DIR Log
   DIR Files
   DIR Refs
   DIR LICENSE
       ---
       tREADME.md (1842B)
       ---
            1 ### Testing eigen-calving in a setup with "tongues"
            2 
            3 `generate_input.py` creates an input file with several "outlet
            4 glaciers" of various widths, starting from 1, 2, ... grid points.
            5 
            6 Run `make default` to run without calving, `make eigen_calving` to
            7 turn on eigen-calving (seems to be unstable on its own because some
            8 tongues develop very thin "offshoots" that are only weakly connected
            9 to grounded ice).
           10 
           11 Run `make eigen_plus_thickness_calving` to run with both eigen-calving
           12 and thickness-calving on. This setup shows that one- and two-cell-wide
           13 tongues *do not calve* at all in this setup.
           14 
           15 This justifies the removal of one-cell-wide tongues using an
           16 additional geometric (and strain-rate-independent) calving rule.
           17 
           18 I'm not sure what to do with tongues that are two cells wide. I think
           19 they will require some changes in the eigen-calving code.
           20 
           21 #### Side note:
           22 
           23 Strictly speaking, the eigen-calving model should produce a **0**
           24 (zero) calving rate in this setup.
           25 
           26 Recall that principal strain rates are computed as follows:
           27 
           28     const PetscScalar A = 0.5 * (u_x + v_y),  // A = (1/2) trace(D)
           29       B   = 0.5 * (u_x - v_y),
           30       Dxy = 0.5 * (v_x + u_y),  // B^2 = A^2 - u_x v_y
           31       q   = sqrt(PetscSqr(B) + PetscSqr(Dxy));
           32     eigen1 = A + q;
           33     eigen2 = A - q; // q >= 0 so e1 >= e2
           34 
           35 In this setup there is no variation in ice thickness in each "tongue",
           36 so `taud_x = 0`, `u_x = v_x = 0` and `u = u_y = 0`, so the code above
           37 should be equivalent to
           38 
           39     eigen1 = v_y;
           40     eigen2 = 0; // q >= 0 so e1 >= e2
           41 
           42 Now, the calving rule is
           43 
           44     if (eigen2 > eigenCalvOffset &&
           45         eigen1 > 0.0) { // if spreading in all directions
           46       calving_rate_horizontal = m_K * eigen1 * (eigen2 - eigenCalvOffset);
           47     } else {
           48       calving_rate_horizontal = 0.0;
           49     }
           50 
           51 and `eigenCalvOffset == 0`, so `calving_rate_horizontal` should be zero.