mirror of
https://gitlab.com/scemama/irpf90.git
synced 2024-12-21 11:53:32 +01:00
Improved documentation
Version:1.2.21 Version:1.2.20
This commit is contained in:
parent
bcfc768b7a
commit
ff34366fde
10
Makefile
Normal file
10
Makefile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.PHONY: all src man
|
||||||
|
|
||||||
|
all: src man
|
||||||
|
|
||||||
|
src:
|
||||||
|
$(MAKE) -C $@
|
||||||
|
|
||||||
|
man:
|
||||||
|
$(MAKE) -C $@
|
||||||
|
|
52
README
52
README
@ -1,35 +1,47 @@
|
|||||||
+==============================================================================+
|
======
|
||||||
| IRPF90 |
|
IRPF90
|
||||||
+==============================================================================+
|
======
|
||||||
|
|
||||||
Dependencies:
|
Dependencies
|
||||||
-------------
|
------------
|
||||||
|
|
||||||
- GNU make (3.81 recommended)
|
- GNU make (>= 3.81 recommended)
|
||||||
- Python > 2.3
|
- Python > 2.3
|
||||||
- Any Fortran 90 compiler (gfortran, for example)
|
- Any Fortran 90 compiler (Intel recommended, for example)
|
||||||
|
|
||||||
Installing IRPF90:
|
Installing IRPF90
|
||||||
------------------
|
-----------------
|
||||||
|
|
||||||
- As the super-user, run
|
${IRPF90_HOME} is the location of your irpf90 directory::
|
||||||
./irpf90.install
|
|
||||||
|
cd ${IRPF90_HOME}
|
||||||
|
make
|
||||||
|
cat << EOF >> ${HOME}/.bash_profile
|
||||||
|
export PYTHONPATH=${IRPF90_HOME}/src:${PYTHONPATH}
|
||||||
|
export PATH=${IRPF90_HOME}/bin:${PATH}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
Using IRPF90:
|
Using IRPF90
|
||||||
-------------
|
------------
|
||||||
|
|
||||||
|
In an empty directory, run::
|
||||||
|
|
||||||
|
irpf90 --init
|
||||||
|
|
||||||
In an empty directory, run:
|
|
||||||
irpf90 -init
|
|
||||||
This command creates a new Makefile suitable for most irpf90 projects.
|
This command creates a new Makefile suitable for most irpf90 projects.
|
||||||
Now you can start to program using irpf90.
|
Now you can start to program using irpf90.
|
||||||
|
|
||||||
|
|
||||||
Web Site:
|
Web Site
|
||||||
|
--------
|
||||||
|
|
||||||
http://irpf90.ups-tlse.fr
|
http://irpf90.ups-tlse.fr
|
||||||
|
|
||||||
Author:
|
Author
|
||||||
Anthony Scemama, LCPQ-IRSAMC, CNRS-Universite Paul Sabatier
|
------
|
||||||
scemama@irsamc.ups-tlse.fr
|
|
||||||
http://irpf90.ups-tlse.fr/index.php?title=Anthony_Scemama
|
| Anthony Scemama, LCPQ-IRSAMC, CNRS-Universite Paul Sabatier
|
||||||
|
| scemama@irsamc.ups-tlse.fr
|
||||||
|
| http://scemama.mooo.com
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
IRPF90 = irpf90 -a -d
|
IRPF90 = ~/irpf90/bin/irpf90 -a -d
|
||||||
FC = gfortran
|
FC = gfortran
|
||||||
FCFLAGS= -O2
|
FCFLAGS= -O2
|
||||||
|
|
||||||
|
@ -12,22 +12,14 @@ END_PROVIDER
|
|||||||
|
|
||||||
BEGIN_PROVIDER [ integer, u1 ]
|
BEGIN_PROVIDER [ integer, u1 ]
|
||||||
integer :: fu
|
integer :: fu
|
||||||
u1 = fu(d1,d2)
|
! u1 = fu(d1,d2)
|
||||||
integer :: n, m
|
u1 = d1+d2+1
|
||||||
n=3
|
|
||||||
do i=1,n
|
|
||||||
print *, i
|
|
||||||
enddo
|
|
||||||
m=2
|
|
||||||
do i=1,m
|
|
||||||
print *, i
|
|
||||||
enddo
|
|
||||||
! PROVIDE u2
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer, u2 ]
|
BEGIN_PROVIDER [ integer, u2 ]
|
||||||
integer :: fu
|
integer :: fu
|
||||||
u2 = fu(d3,d4)
|
! u2 = fu(d3,d4)
|
||||||
|
u2 = d3+d4+1
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
integer function fu(x,y)
|
integer function fu(x,y)
|
||||||
|
1
man/.gitignore
vendored
Normal file
1
man/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
options.rst
|
12
man/Makefile
Normal file
12
man/Makefile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
RST2MAN=rst2man -d -t
|
||||||
|
|
||||||
|
default: man1/irpman.1.gz man1/irpf90.1.gz
|
||||||
|
|
||||||
|
options.rst: ../src/command_line.py
|
||||||
|
python ../src/command_line.py > options.rst
|
||||||
|
|
||||||
|
man1/irpf90.1.gz: irpf90.rst options.rst
|
||||||
|
rm -f $@ ; $(RST2MAN) --title="IRP Fortran 90" irpf90.rst man1/irpf90.1 ; gzip man1/irpf90.1
|
||||||
|
|
||||||
|
man1/irpman.1.gz: irpman.rst
|
||||||
|
rm -f $@ ; $(RST2MAN) --title="IRP man" irpman.rst man1/irpman.1 ; gzip man1/irpman.1
|
36
man/irpf90.rst
Normal file
36
man/irpf90.rst
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
======
|
||||||
|
IRPF90
|
||||||
|
======
|
||||||
|
|
||||||
|
----------------------------------------------------------
|
||||||
|
Fortran programming using Implicit Reference to Parameters
|
||||||
|
----------------------------------------------------------
|
||||||
|
|
||||||
|
:Author: Anthony Scemama scemama@irsamc.ups-tlse.fr
|
||||||
|
:Version: 1.20
|
||||||
|
:Manual section: 1
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
========
|
||||||
|
|
||||||
|
irpf90 [options]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
===========
|
||||||
|
|
||||||
|
irpf90 provides a programming environment which simplifies Fortran
|
||||||
|
programming, via the Implicit Reference to Parameters (IRP) method.
|
||||||
|
For more details, read the tutorial ditributed with the package
|
||||||
|
or visit http://irpf90.ups-tlse.fr
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. include:: options.rst
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
========
|
||||||
|
|
||||||
|
* irpman
|
||||||
|
* http://irpf90.ups-tlse.fr
|
||||||
|
|
32
man/irpman.rst
Normal file
32
man/irpman.rst
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
======
|
||||||
|
IRPman
|
||||||
|
======
|
||||||
|
|
||||||
|
----------------------------------------------------
|
||||||
|
Developper's documentation in the irpf90 environment
|
||||||
|
----------------------------------------------------
|
||||||
|
|
||||||
|
:Author: Anthony Scemama scemama@irsamc.ups-tlse.fr
|
||||||
|
:Version: 1.20
|
||||||
|
:Manual section: 1
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
========
|
||||||
|
|
||||||
|
irpman variable
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
===========
|
||||||
|
|
||||||
|
irpman is a documentation environment for IRPF90. Every IRP
|
||||||
|
variable (described with a BEGIN_PROVIDER ... END_PROVIDER block)
|
||||||
|
has an associated manual page. When a provider contains a
|
||||||
|
documentation block (BEGIN_DOC ... END_DOC), the text entered inside
|
||||||
|
the block is displayed in the manual page of the variable.
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
========
|
||||||
|
|
||||||
|
* irpf90
|
||||||
|
* http://irpf90.ups-tlse.fr
|
||||||
|
|
Binary file not shown.
Binary file not shown.
@ -31,21 +31,21 @@ import re
|
|||||||
|
|
||||||
description = "IRPF90 Fortran preprocessor."
|
description = "IRPF90 Fortran preprocessor."
|
||||||
options = {}
|
options = {}
|
||||||
options['d'] = [ 'debug' , 'Activate debug', 0 ]
|
options['d'] = [ 'debug' , 'Activates debug. The name of the current subroutine/function/provider will be printed on the standard output when entering or exiting a routine, as well as the CPU time passed inside the routine.', 0 ]
|
||||||
options['v'] = [ 'version' , 'Print version of irpf90', 0 ]
|
options['v'] = [ 'version' , 'Prints version of irpf90', 0 ]
|
||||||
options['a'] = [ 'assert' , 'Activate assertions', 0 ]
|
options['a'] = [ 'assert' , 'Activates ASSERT statements. If absent, remove ASSERT statements.', 0 ]
|
||||||
options['h'] = [ 'help' , 'Print this help', 0 ]
|
options['h'] = [ 'help' , 'Print this help', 0 ]
|
||||||
options['i'] = [ 'init' , 'Initialize current directory', 0 ]
|
options['i'] = [ 'init' , 'Initialize current directory. Creates a default Makefile and the temporary working directories.', 0 ]
|
||||||
options['D'] = [ 'define' , 'Define variable', 1 ]
|
options['D'] = [ 'define' , 'Defines a variable identified by the IRP_IF statements.', 1 ]
|
||||||
options['o'] = [ 'checkopt' , 'Show where optimization may be required', 0 ]
|
options['o'] = [ 'checkopt' , 'Shows where optimization may be required', 0 ]
|
||||||
options['p'] = [ 'preprocess' , 'Preprocess file', 1 ]
|
options['p'] = [ 'preprocess' , 'Prints a preprocessed file to standard output. Useful for debugging files containing shell scripts.', 1 ]
|
||||||
options['g'] = [ 'profile' , 'Generate profile code', 0 ]
|
options['g'] = [ 'profile' , 'Activates profiling of the code.', 0 ]
|
||||||
options['t'] = [ 'touch' , 'Display which entities are touched', 1 ]
|
options['t'] = [ 'touch' , 'Display which entities are touched when touching the variable given as an argument.', 1 ]
|
||||||
options['m'] = [ 'memory' , 'Debug memory info', 0 ]
|
options['m'] = [ 'memory' , 'Print memory allocations/deallocations.', 0 ]
|
||||||
options['z'] = [ 'openmp' , 'Automatic openMP tasks (may not work)', 0 ]
|
#options['z'] = [ 'openmp' , 'Automatic openMP tasks (may not work)', 0 ]
|
||||||
options['l'] = [ 'align' , 'Align arrays using compiler directives. Sets the $IRP_ALIGN variable', 1 ]
|
options['l'] = [ 'align' , 'Align arrays using compiler directives and sets the $IRP_ALIGN variable. For example, --align=32 aligns all arrays on a 32 byte boundary.', 1 ]
|
||||||
options['s'] = [ 'substitute' , 'Substitute values for loop max values', 1 ]
|
options['s'] = [ 'substitute' , 'Substitute values in do loops for generating specific optimized code.', 1 ]
|
||||||
options['r'] = [ 'no_directives', 'Ignore compiler directives !DEC$ and !DIR$', 0 ]
|
options['r'] = [ 'no_directives', 'Ignore all compiler directives !DEC$ and !DIR$', 0 ]
|
||||||
options['n'] = [ 'inline' , 'all|providers|builders : Force inlining of providers or builders', 1 ]
|
options['n'] = [ 'inline' , 'all|providers|builders : Force inlining of providers or builders', 1 ]
|
||||||
options['u'] = [ 'unused' , 'Print unused providers', 0 ]
|
options['u'] = [ 'unused' , 'Print unused providers', 0 ]
|
||||||
|
|
||||||
@ -135,12 +135,7 @@ Options:
|
|||||||
t = t.replace("$EXE",self.executable_name)
|
t = t.replace("$EXE",self.executable_name)
|
||||||
t = t.replace("$DESCR",description)
|
t = t.replace("$DESCR",description)
|
||||||
print t
|
print t
|
||||||
sorted = options.keys()
|
print_options()
|
||||||
sorted.sort()
|
|
||||||
for o in sorted:
|
|
||||||
print " -%s , --%15s : %s"%(o,options[o][0].ljust(15),options[o][1])
|
|
||||||
if options[o][2] == 1:
|
|
||||||
print " Requires an argument"
|
|
||||||
print ""
|
print ""
|
||||||
print "Version : ", version
|
print "Version : ", version
|
||||||
print ""
|
print ""
|
||||||
@ -195,3 +190,17 @@ do_$LONG = property(fget=do_$LONG)
|
|||||||
|
|
||||||
|
|
||||||
command_line = CommandLine()
|
command_line = CommandLine()
|
||||||
|
|
||||||
|
def print_options():
|
||||||
|
keys = options.keys()
|
||||||
|
keys.sort()
|
||||||
|
import subprocess, threading
|
||||||
|
for k in keys:
|
||||||
|
description = options[k][1]
|
||||||
|
p1 = subprocess.Popen(["fold", "-s", "-w", "40"],stdout=subprocess.PIPE,stdin=subprocess.PIPE)
|
||||||
|
description = p1.communicate(description)[0]
|
||||||
|
description = description.replace('\n','\n'.ljust(27))
|
||||||
|
print ("-%s, --%s"%(k,options[k][0])).ljust(25), description+'\n'
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print_options()
|
||||||
|
@ -1 +1 @@
|
|||||||
version = "1.2.18"
|
version = "1.2.20"
|
||||||
|
Loading…
Reference in New Issue
Block a user