Chih-Hao Chen

Full-Stack Developer



  • 2019 - 2019
    Shape optimization of a generic Ahmed car geometry

    This short project is to apply our in-house aerodynamic shape optimization framework to analyze a generic car geometry, Ahmed body, and further to design the shape of the aerodynamic to achieve a low-drag design under certain constraints. Without given constraints, the designed geometry is likely to become impractical.

    The first step is to simulate the flow behavior with the in-house flow solver to solver 3D Navier-Stokes PDE based on the Spalart-Allmaras turbulence model. The flow solver is implemented based on the multi-grid iterative method, while a separated turbulence solver is employed to solve the Reynolds stress in Reynolds-averaged Navier-Stokes equations.

    After obtaining the flow solutions and drag force, we apply the BFGS algorithm to perform numerical optimization to find the optimal gradient for the grids points that represent the geometry. Given the gradient, these design points are moved accordingly to alter the shape for a lower-drag aerodynamic body.

    • A 3D multi-grid flow solver is used to iterate the flow state variables;
    • The Spalart-Allmaras turbulence model is employed for the Reynolds stress;
    • The constraints are specified with a grid box to only allow certain grids to be moved;
    • A quasi-Newton method, BFGS, is exploited to look for the optimal gradient associated with the optimization objective;
    • With our framework for shape optimization, a 34% reduction of drag force is achieved with less flow circulation behind the Ahmed car body.
    TECHNOLOGIES
    Fortran MPI Ansys ICEM Tecplot

  • 2018 - 2019
    GCRO with dynamic deflated restarting for solving adjoint systems of equations for aerodynamic shape optimization

    This work aims to present a dynamically adjusted deflated restarting procedure for the generalized conjugate residual method with an inner orthogonalization (GCRO) method.

    The proposed method uses a GCR solver for the outer iteration and the generalized minimal residual (GMRES) with deflated restarting in the inner iteration. Approximate eigenpairs are evaluated at the end of each inner GMRES restart cycle. The approach determines the number of vectors to be deflated from the spectrum based on the number of negative Ritz values, k.

    This extension of dynamic deflated restarting into the traditional GCRO method proves to improve convergence performance with a significant reduction in the memory usage. The novel deflation strategy involves selecting the number of deflated vectors per restart cycle based on the number of negative harmonic Ritz eigenpairs and defaulting to standard restarted GMRES within the inner loop if none, and restricts the deflated vectors to the smallest eigenvalues present in the modified Hessenberg matrix.

    • Employ deflation to improve the convergence of a conventional Krylov subspace solver by removing the unfavorable eigenpairs;
    • No presumption of the number of deflated vectors;
    • Linear system matrix decides its optimal number of deflated vector during convergence;
    • The required memory footprint is significantly lower compared to a general GMRES solver;
    • Compared to GMRES, stronger immunity to weaker preconditioning effect with an increase in the number of threads;
    • Stronger immunity to weaker preconditioning effect with an increase in the number of threads;
    • The developed framework can be used to solve a series of linear systems of equations as not much difference in the right-hand-side vectors.
    TECHNOLOGIES
    C MPI PETSc Python

  • 2015 - 2018
    A dynamically deflated GMRES adjoint solver for aerodynamic shape optimization

    An essential step in adjoint-based aerodynamic shape optimization is to obtain the Lagrange multiplier by solving a sparse linear adjoint system of equations based on the Jacobian matrices from the converged flow states. Such an approach has been applied widely within the aerospace community for the design of aircraft and other optimization problems for aerospace applications. However, the need to resolve the flow over complex geometries often requires highly stretched grids and gives rise to anisotropic flow fields which increase the stiffness of the discrete Jacobian needed for the solution of the adjoint system.

    When a GMRES algorithm preconditioned by an Incomplete LU factorization is used, this stiff linear system requires the use of a large number of Krylov subspace vectors and a high level of fill-in; both require an increase in the amount of memory.

    Deflated restarting, which distributes spectral eigenpairs, has proven to be an effective method to enhance the convergence rates when solving an ill-conditioned linear system of equations. In this paper, we propose an algorithm to dynamically determine the number of deflated vectors and to deactivate deflation to reduce memory utilization. We demonstrate its efficiency for a two-dimensional NACA 0012 airfoil, the three-dimensional Common Research Model (CRM) wing, and two three-dimensional complete aircraft configurations in viscous flow.

    • Employ deflation to improve the convergence of a traditional Krylov subspace solver by removing the unfavorable eigenpairs;
    • No presumption of the number of deflated vectors;
    • Linear system matrix decides its optimal number of deflated vector during convergence;
    • A hierarchical architecture is developed; domain decomposition as the global preconditioning, while ILU(0) with RCM ordering acts as the local preconditioners in each sub-domain;
    • The required memory footprint is significantly lower compared to a general GMRES solver;
    • Stronger immunity to weaker preconditioning effect with an increase in the number of threads;
    • The proposed solver proves to be robust even in industrial-cases.
    TECHNOLOGIES
    C MPI PETSc Python

  • 2013 - 2013
    Mesh Deformation with radial basis function

    This project is to employ radial basis function to deform the mesh due to the curved boundaries, and changes of boundaries if any moving objects. This method propagates the deformation information over the whole mesh grids, then generates a new mesh profile. The degree of deformation is associated with the distance of the grids to the curved or the changing boundaries.

    A variety of radial basis functions can be chosen based on the mesh quality of the newly generated mesh. Furthermore, PyQt5, a cross-platform GUI toolkit, is used to develop the UI to reduce the hassles for users who use this tool in their first attempts. The UI demonstrates the mesh quality of the newly generated mesh profile and allows users to specify which radial basis functions to deform their mesh.

    This developed tool can be applied to both 2D and 3D mesh profiles. Finally, this mesh deformation approach not only can be exploited to curve high-order elements for high-order CFD methods but used to dynamically deform the grids for simulation of moving objects, such as flapping wing, etc.

    • Mesh deformation applicable to both 2D and 3D mesh;
    • A developed UI for users to perform mesh deformation with ease;
    • A variety of radial basis function provided for different kinds of mesh profiles;
    • Applicable to curving high-order elements or to moving geometries for analysis;
    • The evaluation of mesh quality allows user to judge their choices of radial basis functions for deformation.
    TECHNOLOGIES
    Python Numpy Scipy PyQt