SyntheticEddyMethod.jl

SyntheticEddyMethod.jl: A Julia package for the creation of inlet flow conditions for LES - Published in JOSS (2023)

https://github.com/carlodev/syntheticeddymethod.jl

Science Score: 98.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 9 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Earth and Environmental Sciences Physical Sciences - 40% confidence
Last synced: 4 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: carlodev
  • License: mit
  • Language: Julia
  • Default Branch: master
  • Size: 4.41 MB
Statistics
  • Stars: 4
  • Watchers: 2
  • Forks: 1
  • Open Issues: 10
  • Releases: 5
Created almost 3 years ago · Last pushed 11 months ago
Metadata Files
Readme License Citation

README.md

Synthetic Eddy Method

Documentation

Build Status Coverage

Citation

DOI

Introduction

The Synthetic Eddy Method (SEM) is a numerical simulation technique used to model turbulent fluid flow in engineering and scientific applications. It involves synthesizing small-scale turbulent structures, or eddies, within a computational domain to represent the effects of larger-scale turbulent flows. This is accomplished by applying perturbations to the flow field, which induce a cascade of energy from larger to smaller eddies until the energy is dissipated through viscous effects. The result is a simulation that captures the important features of turbulent flows while remaining computationally efficient. SEM has been successfully applied to a range of problems, including airfoil and wing design, turbulent combustion, and oceanography. Its ability to accurately capture the physics of turbulent flows makes it a valuable tool for researchers and engineers seeking to improve the efficiency and performance of fluid systems.

The method has been originally developed by Jarrin (10.1016/j.ijheatfluidflow.2006.02.006).

The Divergence-Free Synthetic Eddy Method (DFSEM) is an evolution of the Synthetic Eddy Method (SEM) used for simulating turbulent flows in fluid dynamics. While the SEM uses stochastic generation of eddies to represent the small scales of turbulence, the DFSEM adds the constraint of ensuring that the synthetic eddies produce a divergence-free flow field. In incompressible flows, as the case of turbulent flows, this constraint ensures that the overall flow remains physically consistent and leads to better accuracy and stability in the simulations.

The method has been originally developed by Poletto at al. (10.1007/s10494-013-9488-2).

Installation

The package is registered, so you can install it as: julia using Pkg Pkg.add(SyntheticEddyMethod)

You can use the most recent release installing it as: julia using Pkg Pkg.add(url="https://github.com/carlodev/SyntheticEddyMethod.jl")

How to use

At first, the user defines the dimension and resolution of the virtual box where the eddies are going to be generated as well as the dimension of the eddies (σ). A common choice is σ = 2Δz or σ = Δz, where Δz is the mesh resolution in the z direction.

```julia using SyntheticEddyMethod

σ = 0.1 b = 5.0 a = 0.0

x = -σ:0.1:+σ y = collect(a:0.1:b) z = collect(a:0.1:b)

```

Then you create the VirtualBox structure that has embedded all the information about the virtual box where the eddy are generated. The number of eddy is automatically computed in order to guarantee an homogeneous fill. You can manually override the value (Vboxinfo.N).

julia Vboxinfo = VirtualBox(y,z,σ) N = Vboxinfo.N #you can override it

Then, eddies are initialized in the virtualbox with random values of position and intensity. You have to specify the time-step, dt. Then the Reynolds stress tensor. Here homegeneous and isotropic turbulence is considered and the terms are internally computed from the turbulence intensity (TI).

```julia t = 0 dt = 0.001

U₀ = 1.0 TI = 0.01 #turbulence intensity

Restress, Eddies = initializeeddies(U₀, TI, Vboxinfo) ```

You have to create a Vector{Vector{Float64}} of points where you want to evaluate the speed. In this case you are evaluating the speed in each point of the domain.

julia vector_points = create_vector_points(x, y, z) You can create evaluate the speed in just one point (useful for monitoring how the velocity varies in time and creating the spectra) julia eval_point = [0.0, 1.0, 2.5]

Compute the velocity fluctuation. For computing the velocity fluctuations, there is a 'correction' using the matrix A which is internally created using the cholesky_decomposition function. julia u_fluct = compute_fluct(vector_points, dt, Eddies, U₀, Vboxinfo, Re_stress) u_fluct = compute_fluct(eval_point, dt, Eddies, U₀, Vboxinfo, Re_stress)

Examples

This is an example of the spectra created using SyntheticEddyMethod with a tent function for different turbulence intensity. The spectra refers to the fluctuation in time in one specific point

It is reported the normalized divergence in a plane using the DFSEM.

Package Features

  • Create velocity fluctuations for inlet boundary conditions
  • Create fluctuations that respect the divergence-free condition (DFSEM)
  • Create coherenteddies in a 3D domain
  • It can simulate anisotropic effects by allowing the eddies to have different dimensions along different directions
  • Define a custom Reynolds Stress Tensor
  • Import custom Reynolds Stress Tensor

Acknowledgement

  • Nomenclature: 10.1016/j.ijheatfluidflow.2006.02.006
  • Shape function definition and Reynolds stress tensor sheet https://github.com/blackcata/SEM.git and the related paper 10.1016/j.ijheatmasstransfer.2019.02.061
  • For detailed description of the procedure https://nheri-simcenter.github.io/WE-UQ-Documentation/common/technical_manual/desktop/WEUQ/TinF.html
  • DFSEM: 10.1007/s10494-013-9488-2

Contributing

It is a collaborative project open to contributions. You can: - Open a new issue - Contact the project administator - Open a PR with the contribution

Owner

  • Login: carlodev
  • Kind: user

JOSS Publication

SyntheticEddyMethod.jl: A Julia package for the creation of inlet flow conditions for LES
Published
July 21, 2023
Volume 8, Issue 87, Page 5565
Authors
Carlo Brunelli ORCID
Mechanical Engineering Department, Royal Military Academy, Belgium
Editor
Philip Cardiff ORCID
Tags
Turbulence Eddy Inlet Conditions LES

Citation (citation.cff)

cff-version: 1.0.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: Brunelli
    given-names: Carlo
title: "SEM"
version: 0.4.0
date-released: 2023-03-27
url: "https://github.com/carlodev/SyntheticEddyMethod/"

GitHub Events

Total
  • Watch event: 2
  • Issue comment event: 22
  • Push event: 2
  • Create event: 1
Last Year
  • Watch event: 2
  • Issue comment event: 22
  • Push event: 2
  • Create event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 201
  • Total Committers: 3
  • Avg Commits per committer: 67.0
  • Development Distribution Score (DDS): 0.025
Past Year
  • Commits: 2
  • Committers: 1
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
carlodev c****s@g****m 196
Philip Cardiff p****f@g****m 4
CompatHelper Julia c****y@j****g 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 5
  • Total pull requests: 23
  • Average time to close issues: 3 months
  • Average time to close pull requests: 3 days
  • Total issue authors: 4
  • Total pull request authors: 3
  • Average comments per issue: 14.6
  • Average comments per pull request: 0.39
  • Merged pull requests: 12
  • Bot issues: 0
  • Bot pull requests: 10
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: 6 months
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • carlodev (2)
  • BTV25 (1)
  • goerz (1)
  • JuliaTagBot (1)
Pull Request Authors
  • github-actions[bot] (10)
  • carlodev (8)
  • philipcardiff (2)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • julia 1 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 8
juliahub.com: SyntheticEddyMethod
  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1 Total
Rankings
Dependent repos count: 9.9%
Dependent packages count: 38.9%
Average: 43.9%
Forks count: 53.5%
Stargazers count: 73.2%
Last synced: 4 months ago

Dependencies

.github/workflows/CI.yml actions
  • actions/checkout v2 composite
  • julia-actions/cache v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/Documentation.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite