source: trunk/UTIL/PYTHON/mcd/fmcd5_gfortran.sh @ 1074

Last change on this file since 1074 was 943, checked in by aslmd, 12 years ago

clean and organized UTIL/PYTHON folder

  • Property svn:executable set to *
File size: 2.2 KB
Line 
1#! /bin/bash
2
3###
4### fmcd_gfortran.sh
5###
6### ---> This should be used to make MCD fortran stuff directly accessible in python
7### ---> This script is for gfortran, but it is easy to adapt to your other compilers
8### ---> A file fmcd.so should be created
9### ---> See mcd.py for use in python. Very easy!
10###
11### AS. 17/04/2012.
12###
13
14### LINKS
15NETCDF=/home/marshttp/NETCDF/netcdf64-4.0.1_gfortran_fPIC/
16wheremcd=/home/marshttp/MCD_v5.0//mcd/
17
18### LOG FILE
19touch fmcd5.log
20\rm fmcd5.log
21
22### COPY/PREPARE SOURCES
23### perform changes that makes f2py not to fail
24sed s/"\!\!'"/"'"/g $wheremcd/call_mcd.F         | sed s/"\!'"/"'"/g | sed s/"\!"/"\n\!"/g > tmp.call_mcd.F
25sed s/"\!\!'"/"'"/g $wheremcd/julian.F           | sed s/"\!'"/"'"/g | sed s/"\!"/"\n\!"/g > tmp.julian.F
26sed s/"\!\!'"/"'"/g $wheremcd/heights.F          | sed s/"\!'"/"'"/g | sed s/"\!"/"\n\!"/g > tmp.heights.F
27sed s/"\!\!'"/"'"/g $wheremcd/constants_mcd.inc  | sed s/"\!'"/"'"/g | sed s/"\!"/"\n\!"/g > constants_mcd.inc
28
29### BUILD THROUGH f2py WHAT IS NECESSARY TO CREATE THE PYTHON FUNCTIONS
30touch fmcd5.pyf
31\rm fmcd5.pyf
32f2py -h fmcd5.pyf -m fmcd5 tmp.call_mcd.F tmp.julian.F tmp.heights.F > fmcd5.log 2>&1
33
34#### IMPORTANT: we teach f2py about variables in the call_mcd subroutines which are intended to be out
35sed s/"real :: pres"/"real, intent(out) :: pres"/g fmcd5.pyf | \
36sed s/"real :: dens"/"real, intent(out) :: dens"/g | \
37sed s/"real :: temp"/"real, intent(out) :: temp"/g | \
38sed s/"real :: zonwind"/"real, intent(out) :: zonwind"/g | \
39sed s/"real :: merwind"/"real, intent(out) :: merwind"/g | \
40sed s/"real dimension(5) :: meanvar"/"real dimension(5),intent(out) :: meanvar"/g | \
41sed s/"real dimension(100) :: extvar"/"real dimension(100),intent(out) :: extvar"/g | \
42sed s/"real :: seedout"/"real, intent(out) :: seedout"/g | \
43sed s/"integer :: ier"/"integer, intent(out) :: ier"/g > fmcd5.pyf.modif
44mv fmcd5.pyf.modif fmcd5.pyf
45
46### BUILD
47f2py -c fmcd5.pyf tmp.call_mcd.F tmp.julian.F tmp.heights.F --fcompiler=gnu95 \
48  -L$NETCDF/lib -lnetcdf \
49  -lm -I$NETCDF/include \
50  --f90flags="-fPIC" \
51  --f77flags="-fPIC" \
52  --verbose \
53  > fmcd5.log 2>&1
54#  --include-paths $NETCDF/include:$NETCDF/lib \ ---> makes it fail
55
56### CLEAN THE PLACE
57\rm tmp.call_mcd.F tmp.julian.F tmp.heights.F constants_mcd.inc
Note: See TracBrowser for help on using the repository browser.