All Projects → szaghi → VecFor

szaghi / VecFor

Licence: other
Vector algebra class for Fortran poor people

Programming Languages

fortran
972 projects
C++
36643 projects - #6 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to VecFor

JS HTML Widgets
Easily create widget objects of arbitrary complexity
Stars: ✭ 16 (-42.86%)
Mutual labels:  oop
lua-pie
A class library for Lua
Stars: ✭ 20 (-28.57%)
Mutual labels:  oop
vector
A high-performance observability data pipeline.
Stars: ✭ 12,138 (+43250%)
Mutual labels:  vector
lvg
Lion Vector Graphics
Stars: ✭ 106 (+278.57%)
Mutual labels:  vector
OOlib
A nimble package for object-oriented programming
Stars: ✭ 39 (+39.29%)
Mutual labels:  oop
memo
다양한 MD 메모
Stars: ✭ 87 (+210.71%)
Mutual labels:  oop
php-mvc-skeleton
A PHP OOP web application skeleton that uses MVC architectural pattern to create a basic application that contains login and multi language systems and can be used in any web project.
Stars: ✭ 46 (+64.29%)
Mutual labels:  oop
OffsetGuided
Code for "Greedy Offset-Guided Keypoint Grouping for Human Pose Estimation"
Stars: ✭ 31 (+10.71%)
Mutual labels:  vector
FACE
Fortran Ansi Colors (and Styles) Environment
Stars: ✭ 36 (+28.57%)
Mutual labels:  oop
cpp-code-snippets
Some useful C++ code snippets
Stars: ✭ 35 (+25%)
Mutual labels:  vector
design-patterns-cookbook
Design Patterns in simple words with examples on PHP
Stars: ✭ 26 (-7.14%)
Mutual labels:  oop
java-wegweiser
🔭 Ein wachsender Wegweiser für die Grundlagen der Java-Programmierung
Stars: ✭ 15 (-46.43%)
Mutual labels:  oop
BottomNavigation-RichPath-Sample
BottomNavigation RichPath Sample
Stars: ✭ 76 (+171.43%)
Mutual labels:  vector
vectorexpress-api
Vector Express is a free service and API for converting, analyzing and processing vector files.
Stars: ✭ 66 (+135.71%)
Mutual labels:  vector
ConvNet-OOP
ConvNet Implementation: An Object Oriented Approach using Keras API.
Stars: ✭ 20 (-28.57%)
Mutual labels:  oop
matrixgl
Yet another matrix library for WebGL
Stars: ✭ 25 (-10.71%)
Mutual labels:  vector
softn-cms
Sistema de gestión de contenidos
Stars: ✭ 22 (-21.43%)
Mutual labels:  oop
Harbol
Harbol is a collection of data structure and miscellaneous libraries, similar in nature to C++'s Boost, STL, and GNOME's GLib
Stars: ✭ 18 (-35.71%)
Mutual labels:  vector
convoworks-core
PHP framework for handling conversational services like Amazon Alexa skills, Google Assistant, Viber, FB messenger ...
Stars: ✭ 20 (-28.57%)
Mutual labels:  oop
SCNMathExtensions
Math extensions for SCNVector3, SCNQuaternion, SCNMatrix4
Stars: ✭ 32 (+14.29%)
Mutual labels:  vector

VecFor GitHub tag Join the chat at https://gitter.im/szaghi/VecFor

License License License License

Status CI Status Coverage Status

VecFor, Vector algebra class for Fortran poor people

A KISS pure Fortran OOD class for computing Vectorial (3D) algebra

  • VecFor is a pure Fortran (KISS) library for building easily nice Command Line Interfaces (CLI) for modern Fortran projects;
  • VecFor is Fortran 2003+ standard compliant;
  • VecFor is OOP designed;
  • VecFor is a Free, Open Source Project.

Table of Contents

Issues

GitHub issues

Compiler Support

Compiler Compiler Compiler Compiler Compiler Compiler

What is VecFor?

VecFor is a user-friendly and Object-Oriented designed API for handling vectors in a (3D) three dimensional frame of reference. It exposes (among others) the object Vector that posses a far complete set of overloaded operators for performing vectorial calculus algebra.

VecFor adheres to the KISS concept: it is a pure Fortran (2003+) library coded into a single module file, vecfor.F90.

Go to Top

Main features

  • Pure Fortran implementation;
  • KISS and user-friendly:
    • simple API (one main object plus few other helpers);
    • easy building and porting on heterogeneous architectures:
      • the vector components are defined as real with parametrized kind; the default kind parameter is set to be 64-bit-like finite precision (defined by means of the portable select_real_kind intrinsic function), but it can be easily changed at compile time;
  • comprehensive (almost complete set of operators for vectorial calculus algebra);
    • all operators accept mixed type/kind arguments: vectors can be mixed with integers and reals of any kinds by means of generic interfaces with dynamic dispatch resolved at compile time;
  • efficient and non intrusive (all object methods and operators are pure or elemental):
    • threads/processes safe;
  • Tests-Driven Developed (TDD);
  • well documented:
    • complete API reference;
    • comprehensive wiki:
  • collaborative developed on GitHub;
  • FOSS licensed;

Any feature request is welcome.

Go to Top

Copyrights

VecFor is an open source project, it is distributed under a multi-licensing system:

Anyone is interest to use, to develop or to contribute to VecFor is welcome, feel free to select the license that best matches your soul!

More details can be found on wiki.

Go to Top

Documentation

Besides this README file the VecFor documentation is contained into its own wiki. Detailed documentation of the API is contained into the GitHub Pages that can also be created locally by means of ford tool.

A Taste of VecFor

VecFor allows a very simple, high-level implementation of vectorial calculus algebra.

Import VecFor

use vecfor ! load vector type and all helpers

Define some vector variables

type(vector) :: point1
type(vector) :: point2
type(vector) :: distance

Initialize vectors by high-level math-like syntax

point1 = 1 * ex ! ex is the versor along x direction exposed by VecFor
point2 = 1 * ex + 2 * ey ! ey is the versor along y direction exposed by VecFor

Note that ex, ey and ez are the Cartesian versors exposed by VecFor.

Perform vectorial calculus algebra

distance = point2 - point1

Use helper methods to simplify your life

print "(A)", " Vectorial distance"
call distance%printf
print "(A)", " Distance module"
print*, distance%normL2()
! expected output
!   Vectorial distance
!   Component x  0.000000000000000E+000
!   Component y +0.200000000000000E+001
!   Component z  0.000000000000000E+000
!   Distance module
!   +0.200000000000000E+001

As you can see from the above example, defining and using a vector become very close to the mathematical formulation. Note that, using the dynamic dispatching resolved at compile time, there is no performance penalty on using a type(vector) variable instead of an hard-coded real, dimension(3) array variable (or even more verbose and less clear real :: x, y, z variables for each vector...).

Go to Top

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].