sandbox/ghigo/README

    This ‘README’ provides on overview of the content of my sandbox.

    Blood Flow Modeling

    Code

    1D blood flow examples

    1D blood flow examples with 2nd-order hydrostatic reconstruction

    and mesh adaptation

    Particle-Ladden Flows

    Code

    • myembed.h: modified embed.h
      • csm1: volume fraction from the previous timestep, used to track emerged and submerged cells in case of a moving embedded boundary;
      • flag emerged: used to indicate if emerged cells have been updated and should be used when extrapolating or restricting/refining on trees;
      • modified bilinear_embed to avoid the use of values in emerged cells (csm1=0) when the emerged cells have not yet been updated (flag emerged=false);
      • should we also modify restriction_average for the multigrid solver?
      • 2D/3D interpolation of cell centered field on embedded boundary: embed_interpolate
      • 2D/3D force computation on embedded boundaries: embed_force;
      • 2D/3D torque computation on embedded boundaries: embed_torque;
      • Neumann to Dirichlet boundary condition on embedded boundary (reverse engineering of the dirichlet_gradient): neumann_scalar;
      • extrapolation of a cut-cell cell-centered value: embed_extrapolation. Only linear polynomial extrapolation is used to avoid unphysical extrapolated values;
      • small cell treatment in update_tracer: accounts for (i) a non-zero face-velocity uf boundary conditions on the embedded boundary and (ii) the variation of the volume of the cut-cell in case of a moving embedded boundary. See Colella et al., 2006, Schneiders et al., 2013 and Miller and Trebotich, 2012).
    • myembed-tree-moving.h: modified embed-tree.h
      • modification of restriction_embed_linear and refine_embed_linear to avoid the use of values in emerged cells (csm1=0) when the emerged cells have not yet been updated (flag emerged=false);
      • correction of error on boundary index when using embed_gradient.
    • mypoisson.h: modified poisson.h
      • in project, the r.h.s. \nabla \cdot u_f now takes into account non-zero face-velocity uf boundary conditions on embedded boundary.
    • myembed-moving.h: functions and hooks to the centered.h events to account for moving embedded boundaries:
      • solid rigid body velocity Dirichlet boundary condition: \displaystyle \mathbf{u} = \mathbf{u_p} + \omega_p \times \mathbf{r}.
      • moving body Neumann boundary condition: \displaystyle \frac{\partial p}{\partial n} = -\rho_f \frac{\mathrm{D} \mathbf{u}}{\mathrm{D}t} \cdot \mathbf{n} = -\rho_f \left( \frac{\mathrm{d} \mathbf{u_p}}{\mathrm{d}t} + \frac{\mathrm{d} \mathbf{\omega_p}}{\mathrm{d}t} \times \mathbf{r} + \mathbf{\omega_p} \times \mathbf{\omega_p} \times \mathbf{r} \right) \cdot \mathbf{n}.
      • modified embed_gradient to account for both the acceration a and solid rigid body acceleration when performing restriction operations in pathological situations;
      • hook the the event stability to account for solid body velocity when computing the timestep;
      • hook to the event advection_term to update solid (cs=0) and emerged (csm1=0) cells, using the function embed_extrapolate.

    Advection-diffusion of a tracer field

    Fluid-particle coupling

    Test cases

    Poisson equation

    Heat equation

    Note that in the following examples, only 3 points have been used to obtain spatial convergence orders. This is done to speedup computations on the wiki. However, similar orders of convergence are obtained using 4 points.

    Stokes equations

    Advection-diffusion equation

    Test cases for moving embedded boundaries with imposed motion

    Test cases for moving embedded boundaries with fluid-solid coupling

    Test cases for moving embedded boundaries with passive scalar

    • Translating cylinder at Re=40 and Pe=100:
      • single projection and passive scalar on the bottom half ot the domain and Dirichlet boundary conditions f=0: moving_scalar1x.c
      • double projection and passive scalar with Dirichlet boundary conditions f=1: moving_scalar1y.c
    • Translating cylinder at Re=400: test Strouhal number St of the Bénard–von Kármán Vortex Street
      • single projection and passive scalar with Pe=100 and Neumann boundary conditions \nabla f \cdot n = 1: moving_scalar2x.c
      • double projection and passive scalar with Pe = 1 and Neumann boundary conditions \nabla f \cdot n = 1: moving_scalar2y.c

    Potential bugs?

    References

    [schneiders2013]

    L. Schneiders, D. Hartmann, M. Meinke, and W. Schroder. An accurate moving boundary formulation in cut-cell methods. Journal of Computational Physics, 235:786–809, 2013.

    [miller2012]

    G. Miller and D. Trebotich. An embedded boundary method for the navier–stokes equations on a time-dependent domain. Communications in Applied Mathematics and Computational Science, 7:1–31, 2012.

    [colella2006]

    Phillip Colella, Daniel Graves, Benjamin Keen, and Modiano David. A cartesian grid embedded boundary method for hyperbolic conservation laws. Journal of Computational Physics, 211(1):347–366, 2006. [ http ]

    [guilmineau2002]

    E. Guilmineau and P. Queutey. A numerical simulation of vortex shedding from an oscillating circular cylinder. Journal of Fluids and Structures, 16:773–794, 2002.

    [dutsch1998]

    H. Dutsch, F. Durst, S. Becker, and H. Lienhart. Low-reynolds-number flow around an oscillating circular cylinder at low keulegan-carpenter numbers. Journal of Fluid Mechanics, 360:249–271, 1998.

    [okajima1982]

    A. Okajima. Strouhal numbers of rectangular cylinders. Journal of Fluid Mechanics, 123:379–398, 1982.

    [faxen1946]

    O.H. Faxen. Forces exerted on a rigid cylinder in a viscous fluid between two parallel fixed planes. Proc. R. Swed. Acad. Eng. Sci., 187:1–13, 1946.