Skip to content
/ ZOO Public

ZOO, Zaghi fOrtran cOllection, where my wild Fortran pets will survive

Notifications You must be signed in to change notification settings

szaghi/ZOO

Repository files navigation

ZOO

License License License License

ZOO, Zaghi fOrtran cOllection, where my wild Fortran pets will survive

please, do not feed the animals 😄


| What is ZOO? | Copyrights | Install ZOO pets |


What is ZOO?

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 Wild Fortran Pets

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.

One ring to rule them all

A centralized module exposing all pets is also provided, i.e. zoo.f90, see install section for more details.

Note on updates

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

Copyrights

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

Install ZOO pets

| Download | Update libraries | Build libraries |

Download

You have 2 possibilities:

Plain download the repository

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.

Clone the repository

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

Update libraries

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.

Build libraries

Compiler Support

Compiler

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+).

Using (GNU) Make

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
Build all library

A global makefile is provided to build all libraries with one command:

make -f makefile
# or simply
make
Build ZOO library

One ring to rule them all.

To be completed.

Using FoBiS

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.

Build all library
FoBiS.py rule -ex makeall
Build ZOO library

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


FAQ

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

About

ZOO, Zaghi fOrtran cOllection, where my wild Fortran pets will survive

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published