• General

    How to quickly export points for a timeVaryingFixedValue boundary in OpenFOAM

    The timeVaryingFixedValue boundary in OpenFOAM allows data extracted from other simulations or experimental data to be mapped to be used as boundary condition. The boundary requires a directory structure containing the data to be set up as follows: caseName 0 constant boundaryData/<boundaryName> TimeFolder0 TimeFolder1 points system The points file contains the coordinates of the points used to perform the data mapping. If data originate from another boundary conditions (e.g., the outlet of another simulation), it is straightforward to automatically generate such file.  Let us assume, for convenience, that the field p needs to be patched, and that the original simulation was executed with pimpleFoam. To extract the values of p…

  • General

    CFD simulations on Azure Batch – Part 5

    The last post of this series focused on setting up a pool of compute nodes on Azure Batch. In this part I show how to add jobs to a pool and then how to add tasks to a job. To summarize the nomenclature: a task is, in the context of CFD, a simulation, a job is a set of simulations. It is possible to configure jobs directly from the portal by selecting Jobs in the side bar, and clicking on the “+Add” button: This will open the “Add job” screen: where we have to select: The job id, following the rules indicated in the figure The pool (click and select…

  • General

    CFD simulations on Azure Batch – Part 4

    Part 3 of this series focused on creating a file share in Azure Storage to be used with Azure Batch. In this part, I will show how to setup a pool of compute node. This can be achieved using both the Azure Portal and the C# or Python API. I will show how to do so using the portal in general, since it may be useful to be familiar with the portal for simple use cases. Then I will provide a summary of the key instructions of the C# API to achieve the same tasks with a few lines of code, and a brief description of how to use the…

  • General

    CFD simulations on Azure Batch – Part 3

    The first two parts of this series were dedicated to preparing a case to be executed without intervention and to install some useful tools to simplify operations with Azure Storage and Azure Batch. In part 3 I discuss the setup of an Azure Storage account and create a file share that we will use with Azure Batch. Create an Azure Storage account The first step consists in creating an Azure Storage account. To do so, click on the search bar at the top of your Azure account page and type “storage”: Select “Storage accounts”, which leads to the screen: In this screen, click on “+Create”. The following page will open:…

  • General

    CFD simulations on Azure Batch – Part 2

    In the first part of this series of blog posts, I showed how to configure an OpenFOAM® case to be executed automatically through a bash script. The script allows the case to be restarted at need, without repeating steps of the case setup that were executed the first time it was executed. Before proceeding with the configuration of Azure Batch, I recommend the installation of two tools provided by Azure: Azure Storage Explorer Batch Explorer Both tools are available for Windows®, Linux® and mac®, so their use is not restricting to a specific operating system. I also recommend installing an SSH client: all the main operating systems currently provide one,…

  • CFD,  Cloud computing,  HPC,  OpenFOAM

    CFD simulations on Azure Batch – Part 1

    I have recently used Azure Batch to do CFD simulations using OpenFOAM®, and I summarize my experience and the procedure I followed below. Before entering the details, it is worth saying what Azure Batch is. Azure Batch is a compute management service that lets users to rapidly deploy batch processes either by running multiple tasks on individual nodes, or a single task on multiple nodes, with high-performance communication (Infiniband or, as it is called in the service, RDMA). While Azure Batch is not a full replacement for an HPC cluster with standard queue systems, it is a convenient option for projects that require a defined number of simulations that need…

  • CFD,  General,  OpenFOAM,  Research

    Extended second-order moment advection scheme

    I made the OpenQBMM implementation of the second-order realizable zeta scheme for moment advection more general. The previous implementation [2] was specific for moments of distributions supported over the positive real line, making the implementation of the scheme not suitable for moments of distributions with compact support, such as the PDF of the mixture fraction used in turbulent mixing and combustion models. However, the original paper of Nguyen and Laurent [1] proposes a straightforward extension to the case of compact support, which is now made available in OpenQBMM.  For simplicity, the implementation considers only the support [0, 1], without loss of generality. The implementation is currently available in the development-openfoam.com…

  • CFD,  Development,  OpenFOAM

    Dynamic Smagorinsky model updated

    Almost eleven years ago, I implemented a version of the dynamic Smagorinsky model of Lilly (1992) into OpenFOAM® and I still receive many requests of a reference where this code has been used, which is quite interesting because I have not implemented the model to do any specific research work, but because back then OpenFOAM used to have a quite strange implementation of the dynamic Smagorinsky model, whose coefficient was averaged on the entire domain volume.  This implementation was stuck until now to OpenFOAM 2.x until now. Today I have ported it to OpenFOAM v2012, and the code is available on GitHub. As soon as it is better tested, a…

  • CFD,  Development,  Linux,  Personal projects

    A basic geometry module

    It is time for another update about my hobby project. I have been working on a module to perform basic operations on the geometry used to perform CFD simulations. Originally my application did this inside the module used to configure meshing with snappyHexMesh. However, this directly linked the geometry assembly to the mesh. I wanted to separate the two tasks for two reasons: Allow the same geometry assembly to be reused in multiple simulations. This also allows to reduce the number of times the same geometry information is stored, which is good side effect. Reduce the complexity of the mesh configuration tool. Focus of this update is the part of…