ZOO, Zaghi fOrtran cOllection, where my wild Fortran pets will survive
please, do not feed the animals 😄
| What is ZOO? | Copyrights | Install ZOO pets |
This is my ZOO where you can see (and take) my wild Fortran pets, namely this is a centralized place where you can get some of my (poor) Fortran libraries that otherwise live in their own repository. The aim is to facilitate end-users that are bothered to deal with my extreme KISS approach that atomizes my projects. My Fortran projects are generally strongly KISS (Keep It Simple and Stupid) thus they are designed to complete one or two simple tasks. This approach is wonderful (IMO), but it has cons: the main cons is probably that it generates a dependency hieararchy. In fact, to complete one task I often exploit other libraries to complete smaller tasks. For example to handle fancy progress bars I have created forbear that, in turn, exploits FACE to handle colors and styles: the end-user of forbear
can be bothered to manually resolve the FACE
dependency if she decide to perform a manual installation of forbear
.
I hope that my ZOO will help end-users to easy handle the pre-requisites phase and it will allow a more easy installation of my poor libraries.
The ZOO is currently hosting (with love):
- BeFoR64, Base64 encoding/decoding library for FoRtran poor men
- FACE, Fortran Ansi Colors (and Styles) Environment
- FLAP, Fortran command Line Arguments Parser for poor people
- FLOw, Fortran fLuid Object
- FiNeR, Fortran INI ParseR and generator
- FITTER, Fortran tIc Toc Timer
- forbear, Fortran (progress) B(e)ar envinronment
- FORESEER, FOrtran RiEmann SolveErs EnviRonment
- ❗ FURY, Fortran Units (environment) for Reliable phYsical math (issued)
- ❗ MORTIF, MORTon Indexer (Z-order) Fortran environment (issued)
- PENF, Portability Environment for Fortran poor people
- StringiFor, Strings Fortran Manipulator with steroids
- VecFor, Vector algebra class for Fortran poor people
- VTKFortran, pure Fortran VTK (XML) API
- FOODIE, Fortran Object-Oriented Differential-equations Integration Environment
- FoXY, Fortran XML parser for poor people
- WenOOF, WENO interpolation Object Oriented Fortran library
These pets are developed by me and other enthusiast Fortraners.
Please, read the documentation of each library contained into their own repository: here no documentation is shipped.
A centralized module exposing all pets is also provided, i.e. zoo.f90, see install section for more details.
The ZOO provides always a recent master branch version of each library: ZOO is itself updated quite often. Anyhow, local ZOO clones can be updated by the end-user by means of the provided zoo_update.sh
script, see install section for more details.
Go to Top
The original contents of ZOO are a Free and Open Source Software (FOSS), they are distributed under a very permissive multi-licensing system: selectable licenses are GPLv3, BSD2-Clause, BSD3-Clause and MIT, feel free to select the license that best matches your workflow.
Each library has its own licensing system: the end-user is kindly invited to carefully read their licenses as reported into their own repositories.
Go to Top
| Download | Update libraries | Build libraries |
You have 2 possibilities:
By your browser: click here.
Or from the terminal:
# by wget
wget https://github.com/szaghi/ZOO/archive/master.zip
# by curl
curl https://github.com/szaghi/ZOO/archive/master.zip
# or by whatever you like...
This plain download is straightforward, but you have to repeat it to obtain new releases.
If you have git
, it could be more handy to clone the repository thus you can update your local clone to new versions very easily
git clone https://github.com/szaghi/ZOO
Then, when you need to update your local clone to a new version, simply do
cd ZOO
git pull
If you have downloaded the ZOO (by means of any methods) and you have git
and a minimal bash
environment, you have the possibility to update the libraries to the last master version without waiting for a ZOO update. To update your local ZOO simply do
cd ZOO
./zoo_update.sh
This command will populate the src
directory with the latest master version of each library.
The main compiler used to develop this Fortran libraries collection is GNU Fortran compiler. In particular, supported versions are v6.3.1 or higher (preferable 7+).
For each library a simple, plain, old makefile is provided. Use them as following
make -f makefile.$library # substutite "$library" with a library name, i.e. "befor64", "face", "flap", etc... (lower case)
# e.g.
make -f makefile.penf
After this command you will have the (statically) compiled library into static/
subdirectory in the ZOO root. In the same subdirectory there is also static/mod/
which contains the compiled .mod
files, e.g:
tree -L 2 static/
static/
├── libbefor64.a
├── ...
├── libwenoof.a
├── mod
│ ├── befor64.mod
│ ├── ...
│ └── wenoof_weights_rec_js.mod
└── obj
├── befor64.o
├── ...
└── wenoof_weights_rec_js.o
A global makefile is provided to build all libraries with one command:
make -f makefile
# or simply
make
One ring to rule them all.
To be completed.
The users of FoBiS (are still there?) have a simple fobos for doing all:
FoBiS.py build -mode [static|shared]-gnu -t src/path_to/$library.[F|f]90 -o lib$library.[a|so] # substutite "$library" with a library name, i.e. "befor64", "face", "flap", etc... (lower case)
# e.g.
FoBiS.py build -mode static-gnu -t src/BeFoR64/befor64.F90 -o libbefor64.a
Note that FoBiS allows also shared libraries building, not only static as Make approach.
The compiled libraries are placed in the same tree as the Make approach.
FoBiS.py rule -ex makeall
One ring to rule them all.
FoBiS.py build -mode [static|shared]-gnu-zoo
This will create the monster library libzoo.[a|so]
that exposes all the ZOO's Wild Pets.
Go to Top
Why this project is named ZOO?
Aside it being another of my bad acronyms, this is really a ZOO: there are libraries for simple-stupid tasks like to colorize terminal output and libraries for challenging tasks like the integration of general non linear ODE. Like a real ZOO, here you can find animals of any size, from small birds to huge elephants.
Go to Top