Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/szaghi/vtkfortran
pure Fortran VTK (XML) API
https://github.com/szaghi/vtkfortran
fortran oop vtk
Last synced: 3 days ago
JSON representation
pure Fortran VTK (XML) API
- Host: GitHub
- URL: https://github.com/szaghi/vtkfortran
- Owner: szaghi
- Created: 2012-04-20T07:15:46.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2022-10-19T06:55:33.000Z (over 2 years ago)
- Last Synced: 2024-06-21T18:04:09.352Z (8 months ago)
- Topics: fortran, oop, vtk
- Language: Fortran
- Homepage:
- Size: 78.5 MB
- Stars: 137
- Watchers: 22
- Forks: 49
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.bsd-2.md
Awesome Lists containing this project
README
# VTKFortran [](https://github.com/szaghi/VTKFortran/releases)
[](https://gitter.im/szaghi/VTKFortran?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[]()
[]()
[]()
[]()[]()
[](https://github.com/szaghi/VTKFortran/actions)
[](https://app.codecov.io/gh/szaghi/VTKFortran)### VTKFortran, pure Fortran VTK (XML) API
A KISS pure Fortran Library to parse and emit files conforming VTK (XML) standard
+ VTKFortran is a pure Fortran library to parse and emit VTK files, [VTK standard](http://www.vtk.org/);
+ VTKFortran is Fortran 2003+ standard compliant;
+ VTKFortran supports parallel architectures, it being threads-safe;
+ VTKFortran supports _ascii_, _binary_ (Base64 encoding) and _raw_ file formats;
+ VTKFortran is a Free, Open Source Project.#### Issues
[]()
#### Compiler Support
[-brightgreen.svg)]()
[-brightgreen.svg)]()
[]()
[]()
[]()
[]()---
[Main features](#main-features) | [Copyrights](#copyrights) | [Documentation](#documentation) | [A Taste of VTKFortran](#a-taste-of-vtkfortran)
---
## Main features
### VTK features
#### Exporters
##### Legacy standard
* [x] Structured Points;
* [x] Structured Grid;
* [x] Unstructured Grid;
* [ ] Polydata;
* [x] Rectilinear Grid;
* [ ] Field;##### XML standard
* [ ] serial dataset:
* [ ] Image Data;
* [ ] Polydata;
* [x] Rectilinear Grid;
* [x] Structured Grid;
* [x] Unstructured Grid;
* [ ] parallel (partitioned) dataset:
* [ ] Image Data;
* [ ] Polydata;
* [x] Rectilinear Grid;
* [x] Structured Grid;
* [x] Unstructured Grid;
* [x] composite dataset:
* [x] vtkMultiBlockDataSet.#### Importers
The importers are under developing.### Parallel Support
VTKFortran can be safely used in parallel *environments*, handling multiple concurrent files: it is **thread/processor-safe**, meaning that it can be safely used into parallel architectures using OpenMP and/or MPI paradigms.
## Copyrights
VTKFortran is an open source project, it is distributed under a multi-licensing system:
+ for FOSS projects:
- [GPL v3](http://www.gnu.org/licenses/gpl-3.0.html);
+ for closed source/commercial projects:
- [BSD 2-Clause](http://opensource.org/licenses/BSD-2-Clause);
- [BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause);
- [MIT](http://opensource.org/licenses/MIT).Anyone is interest to use, to develop or to contribute to VTKFortran is welcome, feel free to select the license that best matches your soul!
More details can be found on [wiki](https://github.com/szaghi/VTKFortran/wiki/Copyrights).
Go to [Top](#top)
## Documentation
Besides this README file the VTKFortran documentation is contained into its own [wiki](https://github.com/szaghi/VTKFortran/wiki). Detailed documentation of the API is contained into the [GitHub Pages](http://szaghi.github.io/VTKFortran/index.html) that can also be created locally by means of [ford tool](https://github.com/cmacmackin/ford).
Go to [Top](#top)
### A taste of VTKFortran
Let us assume our aim being to save our pure Fortran data into a VTK structured grid file in binary XML form. This is simple as
```fortran
use vtk_fortran, only : vtk_filetype(vtk_file) :: a_vtk_file ! A VTK file.
integer, parameter :: nx1=0_I4P ! X lower bound extent.
integer, parameter :: nx2=9_I4P ! X upper bound extent.
integer, parameter :: ny1=0_I4P ! Y lower bound extent.
integer, parameter :: ny2=5_I4P ! Y upper bound extent.
integer, parameter :: nz1=0_I4P ! Z lower bound extent.
integer, parameter :: nz2=5_I4P ! Z upper bound extent.
integer, parameter :: nn=(nx2-nx1+1)*(ny2-ny1+1)*(nz2-nz1+1) ! Number of elements.
real :: x(nx1:nx2,ny1:ny2,nz1:nz2) ! X coordinates.
real :: y(nx1:nx2,ny1:ny2,nz1:nz2) ! Y coordinates.
real :: z(nx1:nx2,ny1:ny2,nz1:nz2) ! Z coordinates.
real :: v(nx1:nx2,ny1:ny2,nz1:nz2) ! Variable at coordinates.
integer :: error ! Error status.! initialize the data...
error = a_vtk_file%initialize(format='binary', filename='XML_STRG-binary.vts', &
mesh_topology='StructuredGrid', &
nx1=nx1, nx2=nx2, ny1=ny1, ny2=ny2, nz1=nz1, nz2=nz2)
error = a_vtk_file%xml_writer%write_piece(nx1=nx1, nx2=nx2, ny1=ny1, ny2=ny2, nz1=nz1, nz2=nz2)
error = a_vtk_file%xml_writer%write_geo(n=nn, x=x, y=y, z=z)
error = a_vtk_file%xml_writer%write_dataarray(location='node', action='open')
error = a_vtk_file%xml_writer%write_dataarray(data_name='float64_scalar', x=v, one_component=.true.)
error = a_vtk_file%xml_writer%write_dataarray(location='node', action='close')
error = a_vtk_file%xml_writer%write_piece()
error = a_vtk_file%finalize()
```Note that all VTKFortran functions return an error code that can be used for sophisticated error trapping algorithms.