From ba1cebcc411935acad2f66e7e715612f24f584bc Mon Sep 17 00:00:00 2001 From: clairbarrass Date: Thu, 14 Nov 2024 11:45:05 +0000 Subject: [PATCH] Publish eCSE07-07 report --- _ecse/eCSE07-07.md | 64 +++++++++++++++++++++++++++++ ecse/reports/ARCHER2-eCSE07-07.jpg | Bin 0 -> 20529 bytes 2 files changed, 64 insertions(+) create mode 100644 _ecse/eCSE07-07.md create mode 100644 ecse/reports/ARCHER2-eCSE07-07.jpg diff --git a/_ecse/eCSE07-07.md b/_ecse/eCSE07-07.md new file mode 100644 index 00000000..9063a5d3 --- /dev/null +++ b/_ecse/eCSE07-07.md @@ -0,0 +1,64 @@ +--- +layout: ecserep +banner: web_banners_10.jpg +title: Evaluating and Optimising the OpenFOAM Overset Mesh Solver for Offshore Renewable Applications +status: live +pub_date: 2024-11-14 15:00:00 +ecseid: eCSE07-07 +subject: Engineering and Energy +Project list page: +image_src: ARCHER2-eCSE07-07.jpg +image_alt: +pdf_link: ARCHER2-eCSE07-07-technical-report.pdf +doi: https://doi.org/10.5281/zenodo.14040132 +summary: Offshore renewable energy structures in the marine environment operate in harsh and inconsistent conditions. The design process for these structures must be robust, and involves extensive numerical and experimental testing. An accurate and efficient Computational Fluid Dynamics (CFD) model is needed in order to capture the complex hydrodynamics and aerodynamics. The overset method for CFD models is particularly well suited to the task, but it can be computationally expensive and inefficient. This eCSE project developed a new optimised version of the open-source ESI-OpenCFD OpenFOAM overset mesh solver. In both test cases used, the computational time was reduced, and in one of the cases the model ran three times faster than before. Additionally, the new method was shown to be more efficient, running faster even when using half the number of computational nodes as before. +pi: Prof Ling Qian, Manchester Metropolitan University +cois: Dr Xiaohu Guo, STFC Daresbury Laboratory, Dr Zhihua Ma (Manchester Metropolitan University), Dr Wei Bai (Manchester Metropolitan University) +tech: Dr Ranjodh Rai (Manchester Metropolitan University) +--- + + + +![image]({{ site.baseurl }}/ecse/reports/{{ page.image_src }}) +{: .img-center style="width: 40%" alt="{{ page.image_alt }}" title="{{ page.image_alt }}" } + + + +The marine environment in which offshore renewable structures operate is naturally subject to harsh and potentially inconsistent wind and wave conditions over the long term, posing a significant challenge to the survivability of any renewable structure and its performance. Given this, there must be a thorough and robust design process, followed by extensive numerical and experimental testing. One of the pivotal tools required at a fundamental level is an accurate and efficient Computational Fluid Dynamics (CFD) model that deals with complex hydrodynamics and aerodynamics. The quality of any such model will also help ensure that the structure is as efficient as possible, both in a practical and financial sense. + +The overset mesh method for CFD models has a major advantage over other techniques in that it allows for large amplitude motion of structures with complex geometries without changing its quality. This makes it particularly useful for aerodynamic analysis of fully rotating structures such as wind turbines—an application that many other methods cannot simulate. However, the primary disadvantage of the overset mesh approach is that it can be computationally expensive and inefficient. + + + +![image]({{ site.baseurl }}/ecse/reports/ARCHER2-eCSE07-07.jpg) +{: .img-center style="width: 60%" alt="Figure 1. Background mesh with the hole pushed back 5 layers of mesh cells from the turbine rotor boundaries in the yz (left) and xy (right) planes" title="Figure 1. Background mesh with the hole pushed back 5 layers of mesh cells from the turbine rotor boundaries in the yz (left) and xy (right) planes" } + + +

Figure 1. Background mesh with the hole pushed back 5 layers of mesh cells from the turbine rotor boundaries in the yz (left) and xy (right) planes

+ +Our eCSE work presents a new optimised version of the open-source ESI-OpenCFD OpenFOAM overset mesh solver that improves its computational efficiency. We tested the new version through two test cases. First, we considered regular wave interaction with a 2-D T-shaped floating body. It was found that the new method reduced computational time by 14% and 7% on 128 and 256 cores respectively — a modest amount but to be expected for a simple case with only small amplitude motion. Second, we considered the aerodynamics of an offshore wind-turbine rotor in constant wind. The new method reduced computational time by 64.6% on 1024 cores—approximately 3x faster whilst achieving practically identical results. The new method was also shown to have sufficiently good parallel efficiency. Indeed, the execution time on 4 nodes is less than half the time taken compared to the old method on 8 nodes, so the new method essentially cuts the required computational resources in half in addition to the reduction in computational time. + +### Publication +[Rai, RS, Qian, L, Ma, Z, & Bai, W. "Evaluating and Optimising the Overset Solver in OpenFOAM for Complex Wave-Structure Interaction Problems."](https://doi.org/10.1115/OMAE2024-127472) Proceedings of the ASME 2024 43rd International Conference on Ocean, Offshore and Arctic Engineering. Volume 6: Polar and Arctic Sciences and Technology; CFD, FSI, and AI. Singapore, Singapore. June 9–14, 2024. V006T08A010. ASME. + + +### Information about the code + +OpenFOAM v2212 must be compiled in the user’s work directory rather than using the pre-installed Archer2 version. The cellCellStencil and inverseDistance directories in `src/overset/cellCellStencil` must then be replaced by the new versions. The stencils must then be compiled by executing ‘wclean’ and ‘wmake’ in `src/overset`. Errors may arise during compilation due to the other interpolation methods; comment out the offending lines accordingly. + + + +### Technical Report + +The Technical Report is currently under embargo and will be published when available. + + + +{% if page.doi %} +### DOI + + {{ page.doi }} + +{% endif %} \ No newline at end of file diff --git a/ecse/reports/ARCHER2-eCSE07-07.jpg b/ecse/reports/ARCHER2-eCSE07-07.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3983dc7f919fab5d61463b4ec3c27a691cee083a GIT binary patch literal 20529 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