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

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

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


Revision 1.1 - (show annotations) (download) (as text)
Mon Feb 16 01:07:15 2004 UTC (21 years, 5 months ago) by cnh
Branch: MAIN
File MIME type: application/x-sh
Files from work with Erik

1 #!/usr/local/bin/tcsh -f
2 #
3 #$Id: $
4 #$Name: $
5 #
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 source ${BUILDROOT}/tools/comp_profile
141
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 source ${BUILDROOT}/tools/scommand
163 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