Thứ Tư, 13 tháng 11, 2019

Easy Python

(1) Matplotlib & ggplot (Link: Github)
#Display Matplotlib styles
%matplotlib inline
plt.style.available

#Plot ggplot style
import numpy as np
import matplotlib.pyplot as plt
def frecuencias(f1=10.0, f2=100.0):
    max_time = 0.5
    times = np.linspace(0, max_time, 1000)
    signal = np.sin(2 * np.pi * f1 * times) + np.sin(2 * np.pi * f2 * times)
    with plt.style.context("ggplot"):
        plt.plot(signal, label="Señal")
        plt.xlabel("Tiempo ($t$)")
        plt.title("Dos frecuencias")
        plt.legend()

frecuencias()

#Display Ipywidgets
from ipywidgets import interact
interact(frecuencias, f1=(10.0,200.0), f2=(10.0,200.0))

(2) Display HTML in Jupyter (link: Github)
from IPython.display import HTML
HTML('<iframe src="http://www.mambiente.munimadrid.es/sica/scripts/index.php" \
            width="700" height="400"></iframe>')
(2.1) Loading data file .CSV and plot (link: Github)

#Loading the data
# ./data/barrio_del_pilar-20160322.csv
data1 = np.genfromtxt('./data/barrio_del_pilar-20160322.csv', skip_header=3, delimiter=';', usecols=(2,3,4))
#Print type of csv file
!head -4 data/barrio_del_pilar-20160322.csv

#Dealing with missing value
np.mean(data1, axis=0)
np.nanmean(data1, axis=0)
# masking invalid data
data1 = np.ma.masked_invalid(data1)
np.mean(data1, axis=0)

data2 = np.genfromtxt('./data/barrio_del_pilar-20151222.csv', skip_header=3, delimiter=';', usecols=(2,3,4))
data2 = np.ma.masked_invalid(data2)
#Plotting the data
plt.plot(data1[:, 1], label='2016')
plt.plot(data2[:, 1], label='2015')

plt.legend()

plt.hlines(200, 0, 200, linestyles='--')
plt.ylim(0, 220)

#Máxima diaria de las medias móviles octohorarias: 10 mg/m³
# http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.convolve.html
def moving_average(x, N=8):
    return np.convolve(x, np.ones(N)/N, mode='same')
plt.plot(moving_average(data1[:, 0]), label='2016')

plt.plot(moving_average(data2[:, 0]), label='2015')

plt.hlines(10, 0, 250, linestyles='--')
plt.ylim(0, 11)
plt.legend()
#Maximum/Minimum of array (Link)
numpy.amax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>)
Arguments :
  • a : numpy array from which it needs to find the maximum value.
  • axis : It’s optional and if not provided then it will flattened the passed numpy array and returns the max value in it.
    • If it’s provided then it will return for array of max values along the axis i.e.
    • If axis=0 then it returns an array containing max value for each columns.
    • If axis=1 then it returns an array containing max value for each row.
Example:
# Get the maximum element from a Numpy array
maxElement = numpy.amax(arr)
print('Max element from Numpy Array : ', maxElement)

# Get the indices of maximum element in numpy array
result = numpy.where(arr == numpy.amax(arr))
print('Returned tuple of arrays :', result)
print('List of Indices of maximum element :', result[0])

# Create a 2D Numpy array from list of lists
arr2D = numpy.array([[11, 12, 13],
[14, 15, 16],
[17, 15, 11],
[12, 14, 15]])
#Some other sources in this file



(3) Continue (link: Github)

Chủ Nhật, 13 tháng 10, 2019

Moody 2.0 released on GitHub

 
An updated version of Moody (2.0.0) now is released on GitHub.
The code can be downloaded from: https://github.com/johannep/moodyAPI
Please let us now how it performs, and if (and how and where) you run into problems.
Highlights of the updates in Moody 2.0 are:
  1. Submerged rigid bodies of Morison type. (Points and Cylinders)
  2. New API-functions allowing the external flow to be passed to Moody. Includes a size-function, a sample function and a setFlow function for an improved flow interaction.
  3. A first step towards Windows compatibility. This is still untested but is released here as a beta version. More updates to come. Please let me know if and how it does not work. A trailing dependency of libwinpthread-1.dll is provided in lib/ in the hope that it will be useful.
  4. Stability improvements, bug-fixes and improved error handling.
  5. moodyPost.x has been extended with a cleaning option. In case simulations crash or are aborted in API mode, this function ensures that the time trace and results of moody are causal and viewable via readCase.m. Usage: moodyPost.x yourMoodyOutput -clean
We have already made some changes based on user input, and we are now at 2.0.1 :)
The current version of moody is aimed at coupled simulations. The mooring code itself is precompiled, however the coupling functionality is released as open source. Only the core folders (bin etc lib and include) are in the tar.gz-files for each architecture.
The primary aim is to release the OpenFOAM-Moody restraint which enables dynamic mooring restraints in OpenFOAM. It requires some changes to the native rirgid body motion framework, and therefore a modified src-code of the v1712+, v1806 and v1906 rigid body libraries are also included under API/OpenFOAM/src. Other interfaces are to matlab and to fortran (with a road-map to FAST-v7 coupling. The fortran code has not been tested for moody-2.0).
Any feedback is gratefully accepted at
The Moody team (Johannes Palm and Claes Eskilsson)
via Johannes Palm
 -------------------------------------------------------------------------------------------------------------------

The API of Moody:
A dynamic mooring library used for coupled station-keeping simulations in OpenFOAM and other hydrodynamic codes. VERSION 2.0

-- UPDATE 2.0.1 --
 The file structure has changed a little to simplify the management of the code. This enables git updates on the repository and to simplifies updates and changes to the Open-Source coded APIs. The release tab will therefore not be used in future updates and releases.
Renamed thirdParty --> API , containing matlab, fortran and OpenFOAM sources.

A bugfix in the OpenFOAM API for multi-processor simulations. post/matlab folder removed. matlab-scripts are now in API/matlab together with the matlab API and shell-interface. moody-arch.tar.gz contains folders: etc/, bin/, lib/, and include/. Unpack your OS-version in place and all should work as before. For the windows tutorial to run, I need to copy the libraries in lib/* into bin/. There is certainly a cleaner solution out there...
-- END UPDATE --

Highlights of the updates in Moody are listed below:
  1. Submerged rigid bodies of Morison type. (Points and Cylinders)
  2. New API-functions allowing the external flow to be passed to Moody. Includes a size-function, a sample function and a setFlow function for an improved flow interaction.
  3. A first step towards Windows compatibility. This is still untested but is released here as a beta version. More updates to come. Please let me know if and how it does not work. A trailing dependency of libwinpthread-1.dll is provided in lib/ in the hope that it will be useful.
  4. Stability improvements, bug-fixes and improved error handling.
  5. moodyPost.x has been extended with a cleaning option. In case simulations crash or are aborted in API mode, this function ensures that the time trace and results of moody are causal and viewable via readCase.m.
    Usage: moodyPost.x yourMoodyOutput -clean
The current version of moody is aimed at coupled simulations. The mooring code itself is precompiled, however the coupling functionality is here released as open source. The primary aim is to release the OpenFOAM-Moody restraint which enables dynamic mooring restraints in OpenFOAM. It requires some changes to the native rirgid body motion framework, and therefore a modified src-code of the v1712+, v1806 and v1906 rigid body libraries are also included in this release. Other interfaces are to matlab and to fortran (with a road-map to FAST-v7 coupling. This has not been tested for moody-2.0).
There are two tutorials for stand-alone mooring simulations (under directory tutorials, who would have guessed...), and two tutorials for coupled simulations in the API-folder (matlab and OpenFOAM)
Please see the user manual for an extensive explanation of the installation and the usage of the code in stand alone as well as in coupled mode. Appended to the user manual is a theory manual which describes the discretisation procedure used in Moody.
This is the first update of the code since the first release for public use last year. Please contact johannes.palm@chalmers.se for any questions or feedback on the code performance.
Johannes Palm 2019-09-20 Gothenburg
 

Thứ Năm, 10 tháng 10, 2019

Application of computational fluid dynamics to wave action on structures

Application of computational fluid dynamics to wave action on structures
Pablo Higuera [2015]
PhD Thesis, University of Cantabria
See below (Spanish + English version)



Citing

olaFlow now has a DOI that can be included in citations: https://doi.org/10.5281/zenodo.1297012
If you want to reference the model in your publications you can use the following phrase:
  • olaFlow [DOI] is an open source project developed within the OpenFOAM® framework as a continuation of the work in Higuera et al. (xxxx). The numerical model enables simulating wave and porous structure interaction in the coastal and offshore fields.
Feel free to modify the phase and adapt it for your own needs.
You can also include any of the following references when citing the implementation, validation and applications.


OlaFlow is an open source project conceived as a continuation of the work in Pablo Higuera's thesis.
The development has been continuous since ihFoam (Jul 8, 2014 - Feb 11, 2016) and olaFoam (Mar 2, 2016 - Nov 25, 2017)

Thứ Sáu, 14 tháng 6, 2019

Bài giảng Latex

Tài liệu ngắn gọn giới thiệu về Latex 2e

------------
Latex Beginer's Guide

----------

Thứ Năm, 13 tháng 6, 2019

OpenFOAM

OpenFOAM

...
OpenFOAM (for "Open-source Field Operation And Manipulation") is a C++ toolbox for the development of customized numerical solvers, and pre-/post-processing utilities for the solution of continuum mechanics problems, including computational fluid dynamics (CFD).
The software is released as free and open-source software under the GNU General Public License Version 3. OpenFOAM has been released by OpenCFD Ltd. since 2004, the name OpenFOAM was registered as a trademark by OpenCFD Ltd.[6] in 2007 and has been non-exclusively licensed to the OpenFOAM Foundation Ltd since 2011.
History
Flow simulation using OpenFOAM and ParaView for visualization
OpenFOAM (originally, FOAM) was created by Henry Weller from the late 1980s at Imperial College, London, to develop a more powerful and flexible general simulation platform than the de facto standard at the time, FORTRAN. This led to the choice of C++ as programming language, due to its modularity and object-oriented features. Hrvoje Jasak joined Imperial College as a PhD candidate from 1993 to 1996, developing error estimation and bounded second-order schemes for FOAM.[7] In 2000, Jasak joined forces with Weller in an attempt to commercialize FOAM through the company Nabla Ltd.[8] In 2004, Nabla Ltd folded and Henry Weller, Chris Greenshields and Mattijs Janssens founded OpenCFD Ltd to develop and release OpenFOAM.[9] At the same time, Jasak founded the consulting company Wikki Ltd [10] and maintained the fork openfoam-extend, later renamed to foam-extend.
On 8 August 2011, OpenCFD was acquired by Silicon Graphics International (SGI).[11] At the same time, the copyright of OpenFOAM was transferred to the OpenFOAM Foundation Ltd., a newly founded, not-for-profit organisation established to distribute OpenFOAM. On 12 September 2012, the ESI Group announced the acquisition of OpenCFD Ltd from SGI.[12] In 2014, Weller and Greenshields left ESI Group and continue the development and management of OpenFOAM, on behalf of the OpenFOAM Foundation, at CFD Direct.[13] CFD Direct develops OpenFOAM with a sequence based identifier (e.g. 5.0), whereas ESI-OpenCFD release OpenFOAM with a date-of-release identifier (e.g. v1806).
Distinguishing featuresSyntax One distinguishing feature of OpenFOAM is its syntax for tensor operations and partial differential equations that closely resembles the equations being solved. For example,[14] the equation
t ( ρ U ) + ( ϕ U ) μ 2 U = p {\displaystyle {\frac {\partial }{\partial t}}(\rho \mathbf {U} )+ abla \cdot (\phi \mathbf {U} )-\mu abla ^{2}\mathbf {U} =- abla p}
is represented by the code
solve (      fvm::ddt(rho,U)    + fvm::div(phi,U)    - fvm::laplacian(mu,U)  ==    - fvc::grad(p) ); 
This syntax, achieved through the use of object-oriented programming and operator overloading, enables users to create custom solvers with relative ease. However, code customization becomes more challenging with increasing depth into the OpenFOAM library, owing to a lack of documentation and heavy use of template metaprogramming.
Extensibility Users can create custom objects, such as boundary conditions or turbulence models, that will work with existing solvers without having to modify or recompile the existing source code. OpenFOAM accomplishes this by combining virtual constructors with the use of simplified base classes as interfaces. As a result, this gives OpenFOAM good extensibility qualities. OpenFOAM refers to this capability as run-time selection.[15]
Structure of OpenFOAM OpenFOAM is constituted by a large base library, which offers the core capabilities of the code:
  • Tensor and field operations
  • Discretization of partial differential equations using a human-readable syntax
  • Solution of linear systems[16]
  • Solution of ordinary differential equations[17]
  • Automatic parallelization of high-level operations
  • Dynamic mesh[18]
  • General physical models
    • Rheological models[19]
    • Thermodynamic models and database[20]
    • Turbulence models[21]
    • Chemical reaction and kinetics models[22]
    • Lagrangian particle tracking methods[23]
    • Radiative heat transfer models
    • Multi-reference frame and single-reference frame methodologies
The capabilities provided by the library are then used to develop applications. Applications are written using the high-level syntax introduced by OpenFOAM, which aims at reproducing the conventional mathematical notation. Two categories of applications exist:
  • Solvers: they perform the actual calculation to solve a specific continuum mechanics problem.
  • Utilities: they are used to prepare the mesh, set-up the simulation case, process the results, and to perform operations other than solving the problem under examination.
Each application provides specific capabilities: for example, the application called blockMesh is used to generate meshes from an input file provided by the user, while another application called icoFoam solves the Navier–Stokes equations for an incompressible laminar flow.
Finally, a set of third-party packages are used to provide parallel functionality (OpenMPI) and graphical post-processing (ParaView).
Capabilities
Simulation of burning Methane. The Graphical user interface is ParaView.
OpenFOAM solvers include:[24]
  • Basic CFD solvers
  • Incompressible flow with RANS and LES capabilities[25]
  • Compressible flow solvers with RANS and LES capabilities[26]
  • Buoyancy-driven flow solvers[27]
  • DNS and LES
  • Multiphase flow solvers[28]
  • Particle-tracking solvers
  • Solvers for combustion problems[29]
  • Solvers for conjugate heat transfer[30]
  • Molecular dynamics solvers[31]
  • Direct simulation Monte Carlo solvers[32]
  • Electromagnetics solvers[33]
  • Solid dynamics solvers[34]
In addition to the standard solvers, OpenFOAM syntax lends itself to the easy creation of custom solvers.
OpenFOAM utilities are subdivided into:
  • Mesh utilities
    • Mesh generation: they generate computational grids starting either from an input file (blockMesh), or from a generic geometry specified as STL file, which is meshed automatically with hex-dominant grids (snappyHexMesh)
    • Mesh conversion: they convert grids generated using other tools to the OpenFOAM format
    • Mesh manipulation: they perform specific operations on the mesh such as localized refinement, definition of regions, and others
  • Parallel processing utilities: they provide tools to decompose, reconstruct and re-distribute the computational case to perform parallel calculations
  • Pre-processing utilities: tools to prepare the simulation cases
  • Post-processing utilities: tools to process the results of simulation cases, including a plugin to interface OpenFOAM and ParaView.
  • Surface utilities
  • Thermophysical utilities
License OpenFOAM is free and open-source software, released under the GNU General Public License version 3.[35]
Advantages and disadvantagesAdvantages
  • Friendly syntax for partial differential equations
  • Fully documented source code[36]
  • Unstructured polyhedral grid capabilities
  • Automatic parallelization of applications written using OpenFOAM high-level syntax
  • Wide range of applications and models ready to use
  • Commercial support and training provided by the developers
  • No license costs
Disadvantages
  • The development community suffers from fragmentation, giving rise to numerous forked projects.
  • Absence of an integrated graphical user interface (stand-alone open-source and proprietary options are available)
  • The Programmer's guide does not provide sufficient details, making the progress slow if you need to write new applications or add functionality
GUI and software tools integrated with OpenFOAM
  • FEATool Multiphysics[37] is an easy to use physics simulation toolbox and GUI for MATLAB.
  • HELYX-OS[38]
  • iconCFD[39]
  • InsightCAE[40] is an open source project for creating automated simulation workflows which can be controlled from a GUI ("vertical apps"). OpenFOAM is supported as the primary backend for CFD simulations.
  • MantiumFlow[41] - a CLI and GUI tool which automates CFD pre and post-processing, turning simulations into Apps ("vertical apps").
  • SimFlow[42]
  • SimScale[43]
  • simulationHub[44] - online platform with automated cloud based CFD Apps ("vertical apps"), specifically developed for Design engineer
  • SwiftBloc[45] and SwiftSnap[46]
  • Visual-CFD[47] is an advanced, intelligent environment for OpenFOAM including Pre and Post modules with process Automation/Customization features
  • preCICE[48] is an open-source coupling library for partitioned multi-physics simulations.
See also
  • ParaView an open-source multiple-platform application for interactive scientific visualization
References
  1. "CFD Direct - The Architects of OpenFOAM". CFD Direct. Archived from the original on 27 March 2015.
  2. "The open source CFD toolbox". OpenFOAM.
  3. "OpenFOAM Version 1.0". Archived from the original on 7 June 2017.
  4. "OpenFOAM® History".
  5. "Release History - OpenFOAM".
  6. OpenCFD. "OpenFOAM® - Official home of The Open Source Computational Fluid Dynamics (CFD) Toolbox". www.openfoam.com. Archived from the original on 22 September 2016.
  7. Jasak, Hrvoje (1996). Error Analysis and Estimation for the Finite Volume Method with Applications to Fluid Flows (PDF).
  8. Chen, Goong; Xiong, Qingang; Morris, Philip J.; Paterson, Eric G.; Sergeev, Alexey Sergeev; Wang, Yi-Ching. (April 2014). "OpenFOAM for Computational Fluid Dynamics". Notices of the American Mathematical Society. 61 (4): 354–363. doi:10.1090/noti1095. ISSN 0002-9920.
  9. Greenshields, Chris (3 April 2016). "Release History". openfoam.org. Archived from the original on 29 July 2017.
  10. "Wikki Ltd - About Us".
  11. "Press Releases: SGI Acquires OpenCFD Ltd., the Leader In Open Source Computational Fluid Dynamics (CFD) Software". SGI. Archived from the original on 6 December 2012. Retrieved 18 December 2012.
  12. "Acquisition of OpenCFD Ltd., The leader in Open Source software in Computational Fluid Dynamics". ESI Group. 11 September 2012. Archived from the original on 6 December 2012. Retrieved 18 December 2012.
  13. "OpenFOAM". CFD Direct. 25 March 2015. Archived from the original on 29 March 2015.
  14. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  15. OpenFOAM's run-time selection mechanism explained Archived 8 January 2014 at the Wayback Machine
  16. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  17. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  18. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 27 March 2015.
  19. "OpenFOAM v5 User Guide: 7.3 Transport/rheology models". cfd.direct. 2 March 2017. Archived from the original on 19 March 2016.
  20. "OpenFOAM v5 User Guide: 7.1 Thermophysical models". cfd.direct. 2 March 2017. Archived from the original on 19 March 2016.
  21. "Turbulence Modelling - OpenFOAM - CFD Direct". cfd.direct. Archived from the original on 9 August 2016.
  22. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  23. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  24. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 21 March 2015.
  25. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  26. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  27. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  28. "Multiphase Flows - OpenFOAM - CFD Direct". cfd.direct. Archived from the original on 9 August 2016.
  29. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  30. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  31. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  32. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  33. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  34. "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
  35. Greenshields, Chris (28 April 2016). "Free Software Licence". openfoam.org. Archived from the original on 9 June 2012.
  36. "OpenFOAM: Free, Open Source Software from the OpenFOAM Foundation". cpp.openfoam.org.
  37. "FEATool 1.8 with OpenFOAM MATLAB CFD GUI Integration". featool.com. Retrieved 18 May 2018.
  38. "HELYX-OS GUI for OpenFOAM | ENGYS". engys.com. Retrieved 15 January 2018.
  39. Administrator. "Setup: iconCFD Process". iconcfd.com. Retrieved 15 January 2018.
  40. "Open Source Engineering Software - silentdynamics". silentdynamics. Retrieved 7 June 2018.
  41. "CFD simulation software using OpenFOAM® made as simple as possible". MantiumFlow. Retrieved 27 August 2018.
  42. "simFlow CFD Software - OpenFOAM® GUI". simFlow CFD. Retrieved 15 January 2018.
  43. "Open Source Solvers Integrated with SimScale". SimScale. Retrieved 15 January 2018.
  44. "Components used in simulationHub". Retrieved 7 April 2019.
  45. "Contrib/SwiftBlock - OpenFOAMWiki". openfoamwiki.net. Retrieved 15 January 2018.
  46. "Contrib/SwiftSnap - OpenFOAMWiki". openfoamwiki.net. Retrieved 15 January 2018.
  47. "Visual-CFD for OpenFOAM®". openfoam.com. Retrieved 5 May 2018.
  48. "preCICE". Retrieved 24 March 2019.
External linksOfficial resources Community resources Other resources