/[MITgcm]/MITgcm_contrib/ESMF/mytools/mkmod.sh
ViewVC logotype

Annotation of /MITgcm_contrib/ESMF/mytools/mkmod.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (hide annotations) (download) (as text)
Mon Feb 16 03:12:18 2004 UTC (21 years, 5 months ago) by cnh
Branch: MAIN
Changes since 1.1: +4 -4 lines
File MIME type: application/x-sh
Updates directory paths

1 cnh 1.1 #!/usr/local/bin/tcsh -f
2     #
3 cnh 1.2 #$Id: mkmod.sh,v 1.1 2004/02/16 01:07:15 cnh Exp $
4     #$Name: $
5 cnh 1.1 #
6     # Script to create modules for an MITgcm production code instance
7     # Run this script after the CPP stage of the standard genmake2
8     # build
9     #
10     # Script does following
11     # Selects a set of "module" files with the .f suffix.
12     # The set of module files includes all the source files except
13     # main.f and a small number of runtime library files.
14     # The module file set is then placed within a module of a given name.
15     #
16     #
17     #
18     # Set module prefix
19     if ( $# == 1 ) then
20     set mpref_s = ( $1 )
21     else
22     set mpref_s = ( atm )
23     endif
24     set mpref_l = ( mitgcm_org_${mpref_s} )
25    
26     # Set output directory
27     set outdir = ( mmout )
28    
29     echo "Creating small f files"
30     make small_f
31    
32     echo "Building list of .f files"
33     ls -1 *.f > flist
34     cp flist flist1
35     set mitgcmrtl = ( mdsio_byteswapr4.f mdsio_byteswapr8.f fool_the_compiler.f )
36     set excludelist = ( main.f ${mitgcmrtl} )
37     foreach f ( $excludelist )
38     cat flist1 | grep -v "^$f" > flist2
39     cp flist2 flist1
40     end
41     cp flist1 flist
42     set flist = (`cat flist`)
43    
44     echo "Joining .f into ${mpref_s}_mod.F"
45     \rm ${mpref_l}_mod.Ftmp ${mpref_l}_mod.F
46     foreach f ( $flist )
47     cat $f >> ${mpref_l}_mod.Ftmp
48     echo -n "."
49     end
50     echo " "
51    
52     echo "Removing comments and blank lines"
53     cat ${mpref_l}_mod.Ftmp | grep -v '^ *$' | grep -v '^[a-zA-Z]' > ${mpref_l}_mod2.Ftmp
54    
55     echo "Putting END SUBROUTINE at end of subroutines"
56     cat ${mpref_l}_mod2.Ftmp | awk -f print_sub.awk > ${mpref_l}_mod3.Ftmp
57     cat <<EOF > ${mpref_l}_mod.Ftmp
58     MODULE ${mpref_l}
59     USE ESMF_MOD
60     PRIVATE
61     PUBLIC DRIVER_INIT
62     PUBLIC DRIVER_RUN
63     PUBLIC GET_DOMAIN_SIZE
64     CONTAINS
65     EOF
66     cat ${mpref_l}_mod3.Ftmp >> ${mpref_l}_mod.Ftmp
67    
68     # Remove EXTERNAL refs for functions
69     echo "Removing EXTERNAL refs for functions that are within the module"
70     set extDel = ( DIFFERENT_MULTIPLE IFNBLNK ILNBLNK TIMER_INDEX \
71     IO_ERRCOUNT MDS_RECLEN PORT_RAND SBO_RHO NLATBND \
72     EXF_BULKQSAT EXF_BULKCDN EXF_BULKRHN)
73     foreach e ( $extDel )
74     cat ${mpref_l}_mod.Ftmp | grep -iv " EXTERNAL *${e}" > f1.Ftmp
75     cp f1.Ftmp ${mpref_l}_mod.Ftmp
76     end
77    
78     # Remove type declaarations for functions
79     echo "Removing type declarations for functions that are within the module"
80     cat ${mpref_l}_mod.Ftmp | grep -iv ' *LOGICAL *DIFFERENT_MULTIPLE' > f1.Ftmp
81     cp f1.Ftmp ${mpref_l}_mod.Ftmp
82     cat ${mpref_l}_mod.Ftmp | grep -iv ' *INTEGER *ILNBLNK' > f1.Ftmp
83     cp f1.Ftmp ${mpref_l}_mod.Ftmp
84     cat ${mpref_l}_mod.Ftmp | grep -iv ' *INTEGER *IFNBLNK' > f1.Ftmp
85     cp f1.Ftmp ${mpref_l}_mod.Ftmp
86     cat ${mpref_l}_mod.Ftmp | grep -iv ' *INTEGER *TIMER_INDEX' > f1.Ftmp
87     cp f1.Ftmp ${mpref_l}_mod.Ftmp
88     cat ${mpref_l}_mod.Ftmp | grep -iv ' *INTEGER *IO_ERRCOUNT' > f1.Ftmp
89     cp f1.Ftmp ${mpref_l}_mod.Ftmp
90     cat ${mpref_l}_mod.Ftmp | grep -iv ' *INTEGER *MDS_RECLEN' > f1.Ftmp
91     cp f1.Ftmp ${mpref_l}_mod.Ftmp
92     cat ${mpref_l}_mod.Ftmp | grep -iv ' *INTEGER *NLATBND' > f1.Ftmp
93     cp f1.Ftmp ${mpref_l}_mod.Ftmp
94     cat ${mpref_l}_mod.Ftmp | grep -iv ' *REAL\*8 *PORT_RAND' > f1.Ftmp
95     cp f1.Ftmp ${mpref_l}_mod.Ftmp
96     cat ${mpref_l}_mod.Ftmp | grep -iv ' *REAL\*8 *SBO_RHO' > f1.Ftmp
97     cp f1.Ftmp ${mpref_l}_mod.Ftmp
98     cat ${mpref_l}_mod.Ftmp | grep -iv ' *REAL\*8 *EXF_BULKQSAT' > f1.Ftmp
99     cp f1.Ftmp ${mpref_l}_mod.Ftmp
100     cat ${mpref_l}_mod.Ftmp | grep -iv ' *REAL\*8 *EXF_BULKCDN' > f1.Ftmp
101     cp f1.Ftmp ${mpref_l}_mod.Ftmp
102     cat ${mpref_l}_mod.Ftmp | grep -iv ' *REAL\*8 *EXF_BULKRHN' > f1.Ftmp
103     cp f1.Ftmp ${mpref_l}_mod.Ftmp
104    
105     echo "Putting END FUNCTION at end of functions"
106     cat ${mpref_l}_mod2.Ftmp | awk -f print_func.awk > ${mpref_l}_mod4.Ftmp
107     cat ${mpref_l}_mod4.Ftmp >> ${mpref_l}_mod.Ftmp
108    
109     cat <<EOF >> ${mpref_l}_mod.Ftmp
110     END MODULE ${mpref_l}
111     EOF
112     # Change all the common block names in the module
113     # cat ${mpref_l}_mod.Ftmp | sed s'z\( *COMMON *[^/]*/ *\)\([^ ]*\)\( */.*\)z\1COMPOCEAN_\2\3z' >f1.Ftmp
114     cat ${mpref_l}_mod.Ftmp | sed s'z\( *COMMON[^/]*\)/\(.*\)/\([^/]*\)z COMMON/C_'${mpref_s}'_\2/\3z' > f1.Ftmp
115     cp f1.Ftmp ${mpref_l}_mod.Ftmp
116    
117     echo "Compiling code"
118     set comp = /s/local/1/cnh/usr/local/pkg/lammpi/lam-7.0.3/lahey/bin/mpif77
119     set compopts = ( --dbl -O0 --fix --lst --xref --wide -I/s/local/1/cnh/usr/local/src/ESMF_1_0_4_withlam/esmf/mod/modO/Linux.lahey.32.default )
120     set complibs = ( -L/s/local/1/cnh/usr/local/src/ESMF_1_0_4_withlam/esmf/lib/libO/Linux.lahey.32.default -lesmf )
121    
122     set comp = /usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/pgi/bin/mpif90
123     set compopts = ( -r8 -Mfixed -Mextend -byteswapio )
124     set complibs = ( )
125    
126     set comp = /usr/local/pkg/mpi/mpich-1.2.5..10/lahey/bin/mpif90
127     set compopts = ( --dbl --o2 --fix --lst --xref --wide --tp4 )
128     #set compopts = ( --dbl --o0 --fix --lst --xref --wide --sav )
129     set complibs = ( -L/usr/local/pkg/ESMF/ESMF_1_0_4/mpich-1.2.5..10/lahey/lib/libO/Linux.lahey.32.default -lesmf )
130     set compinc = ( -I/usr/local/pkg/ESMF/ESMF_1_0_4/mpich-1.2.5..10/lahey/mod/modO/Linux.lahey.32.default )
131     set compinc = ( ${compinc} -I${BUILDROOT}/esmf_top )
132    
133     #set comp = xlf95
134     #set compopts = ( -qfixed=132 -O3 -qarch=pwr4 -qtune=pwr4 -qcache=auto -qmaxmem=-1 -bmaxdata:0x80000000 -q64 )
135     #set compopts = ( --dbl --o0 --fix --lst --xref --wide --sav )
136     #set complibs = ( -L/fs/cgd/data0/erik/esmf/lib/libO/AIX.default.64.default -lesmf )
137     #set compinc = ( -I/fs/cgd/data0/erik/esmf/mod/modO/AIX.default.64.default )
138    
139    
140 cnh 1.2 source ${BUILDROOT}/mytools/comp_profile.${COMP_PROF}
141 cnh 1.1
142     set compinc = ( ${compinc} -I${BUILDROOT}/esmf_top )
143    
144    
145     # Create output directory
146     mkdir mmout
147    
148     # Create runtime library archive
149     set mitgcmrtlo = ( )
150     foreach f ( $mitgcmrtl )
151     echo " " | $comp $compopts -c ${f}
152     set mitgcmrtlo = ( $mitgcmrtlo ${f:r}.o )
153     end
154     cc -q64 -c tim.c
155     set mitgcmrtlo = ( $mitgcmrtlo tim.o )
156     \rm mmout/libmitgcmrtl.a
157     ar -X64 -s -rc mmout/libmitgcmrtl.a $mitgcmrtlo
158     #ranlib mmout/libmitgcmrtl.a
159    
160     # Create component library archive
161     mv ${mpref_l}_mod.Ftmp ${mpref_l}_mod.F
162 cnh 1.2 source ${BUILDROOT}/mytools/scommand
163 cnh 1.1 mv foo.F ${mpref_l}_mod.F
164     echo " " | $comp $compopts -c ${mpref_l}_mod.F ${complibs} ${compinc}
165     mv ${mpref_l}_mod.F ${mpref_l}_mod.Ftmp
166     ./template_comp.sh ${mpref_s}
167     cc -q64 -c component_${mpref_s}_context.c
168     \rm mmout/lib${mpref_l}.a
169     ar -X64 -s -rc mmout/lib${mpref_l}.a ${mpref_l}_mod.o component_${mpref_s}_context.o
170     #ranlib mmout/lib${mpref_l}.a
171     cp ${mpref_l}.mod mmout
172    
173     \rm *mod
174     mv main.f main.F90
175     #echo $comp $compopts main.F90 ${mpref_l}_mod.o $mitgcmrtlo tim.o $complibs
176     #echo " " | $comp $compopts main.F90 ${mpref_l}_mod.o $mitgcmrtlo $complibs
177     #echo $comp $compopts main.F90 -Immout -Lmmout -l${mpref_l} -lmitgcmrtl $complibs
178     #echo " " | $comp $compopts main.F90 -Immout -Lmmout -l${mpref_l} -lmitgcmrtl $complibs
179     mv main.F90 main.f
180    
181     # Lahey compiler command line
182     # /usr/local/pkg/lammpi/lam-7.0.3/lahey/bin/mpif77 --dbl -O0 --fix --lst --xref --wide -I/s/local/1/cnh/usr/local/src/ESMF_1_0_4_withlam/esmf/mod/modO/Linux.lahey.32.default main.F90 ${mpref_l}_mod.o mdsio_byteswapr4.o mdsio_byteswapr8.o fool_the_compiler.o tim.o -L/home/cnh/src/ESMF_1_0_4_withlam/esmf/lib/libO/Linux.lahey.32.default -lesmf
183     # To run
184     # /s/local/1/cnh/usr/local/pkg/lammpi/lam-7.0.3/lahey/bin/mpirun -np 4 -t -v ../build/a.out
185     # To start lam daemon
186     # /s/local/1/cnh/usr/local/pkg/lammpi/lam-7.0.3/lahey/bin/lamboot -c /s/local/1/cnh/usr/local/pkg/lammpi/lam-7.0.3/lahey/etc/lam-conf.lamd -v -d
187     # NB - for starting daemon you need "lamd" in your search path

  ViewVC Help
Powered by ViewVC 1.1.22