Commit f7803709 authored by HOURDIN Christophe's avatar HOURDIN Christophe
Browse files

minor changes on master branch

parent 7c57ad0f
# $Id: Makefile 1483 2014-03-15 17:05:10Z rblod $
#
#======================================================================
# CROCO is a branch of ROMS developped at IRD and INRIA, in France
# The two other branches from UCLA (Shchepetkin et al)
# and Rutgers University (Arango et al) are under MIT/X style license.
# CROCO specific routines (nesting) are under CeCILL-C license.
#
# CROCO website : http://www.croco-ocean.org
#======================================================================
#
# Universal machine independent makefile for ROMS model
#
#======================================================================
# Set machine dependent definitions and rules.
#======================================================================
include Makedefs
#======================================================================
# Model Configuration:
#======================================================================
# SRCS: source codes files are sorted into groups, separated by
# blanc lines:
# 1) main driving part; 2) 2D time stepping engine;
# 3) 3D time stepping engine; 4) non-hydrostatic engine
# 5) sea-water EOS; 6) vertical mixing schemes;
# 7) on-fly model diagnostics; 8) netCDF I/O routines;
# 9) main forcing; 10) Wave forcing routines;
# 11) Online surface forcing; 12) Floats routines;
# 13) Station diagnostics; 14) biology/sediment routines;
# 15) PISCES biology; 16) MPI routines;
# 17) AGRIF routines; 18) OASIS coupling interface;
#
# SRC90: additional F90 routines for PISCES code and Non-hydrostatic
# analysis routines
#======================================================================
SRCS = main.F step.F read_inp.F\
timers_roms.F init_scalars.F init_arrays.F set_weights.F\
set_scoord.F ana_grid.F setup_grid1.F setup_grid2.F\
set_nudgcof.F ana_initial.F analytical.F zonavg.F\
\
step2d.F u2dbc.F v2dbc.F zetabc.F\
obc_volcons.F\
\
pre_step3d.F step3d_t.F step3d_uv1.F step3d_uv2.F\
prsgrd.F rhs3d.F set_depth.F omega.F\
uv3dmix.F uv3dmix_spg.F t3dmix.F t3dmix_spg.F\
hmix_coef.F wetdry.F\
u3dbc.F v3dbc.F t3dbc.F\
\
step3d_fast.F\
step3d_w.F rhs3d_w_nh.F initial_nbq.F grid_nbq.F\
unbq_bc.F vnbq_bc.F wnbq_bc.F rnbq_bc.F\
w3dbc.F nbq_bry_store.F\
\
rho_eos.F ab_ratio.F alfabeta.F\
\
ana_vmix.F bvf_mix.F lmd_vmix.F gls_mixing.F\
lmd_skpp.F lmd_bkpp.F lmd_swfrac.F lmd_wscale.F\
\
diag.F wvlcty.F checkdims.F grid_stiffness.F\
bio_diag.F setup_kwds.F check_kwds.F check_srcs.F\
check_switches1.F check_switches2.F\
debug.F\
\
param.F ncscrum.F scalars.F\
output.F put_global_atts.F\
nf_fread.F nf_fread_x.F nf_fread_y.F nf_read_bry.F\
get_date.F lenstr.F closecdf.F insert_node.F\
fillvalue.F nf_add_attribute.F set_cycle.F\
def_grid_2d.F def_grid_3d.F def_his.F def_rst.F\
def_diags.F def_diagsM.F def_bio_diags.F\
wrt_grid.F wrt_his.F wrt_avg.F wrt_rst.F\
wrt_diags.F wrt_diags_avg.F wrt_diagsM.F wrt_diagsM_avg.F\
wrt_bio_diags.F wrt_bio_diags_avg.F\
set_avg.F set_diags_avg.F set_diagsM_avg.F\
set_bio_diags_avg.F\
def_diags_vrt.F wrt_diags_vrt.F\
set_diags_vrt.F set_diags_vrt_avg.F wrt_diags_vrt_avg.F\
def_diags_ek.F wrt_diags_ek.F\
set_diags_ek.F set_diags_ek_avg.F wrt_diags_ek_avg.F\
def_diags_pv.F wrt_diags_pv.F\
set_diags_pv.F set_diags_pv_avg.F wrt_diags_pv_avg.F\
def_diags_eddy.F\
set_diags_eddy_avg.F wrt_diags_eddy_avg.F\
def_surf.F wrt_surf.F\
set_surf_avg.F wrt_surf_avg.F\
\
get_grid.F get_initial.F get_vbc.F get_wwave.F\
get_tclima.F get_uclima.F get_ssh.F get_sss.F\
get_smflux.F get_stflux.F get_srflux.F get_sst.F\
mod_tides_mas.F tidedata.F mas.F get_tides.F\
clm_tides.F get_bulk.F bulk_flux.F\
get_bry.F get_bry_bio.F sstskin.F\
get_psource.F get_psource_ts.F\
cfb_stress.F\
\
mrl_wci.F wkb_wwave.F wkbbc.F get_bry_wkb.F\
\
online_bulk_var.F online_get_bulk.F\
online_interp.F online_interpolate_bulk.F\
online_set_bulk.F\
\
init_floats.F wrt_floats.F step_floats.F rhs_floats.F\
interp_rho.F def_floats.F init_arrays_floats.F\
random_walk.F get_initial_floats.F\
\
init_sta.F wrt_sta.F step_sta.F interp_sta.F\
def_sta.F init_arrays_sta.F\
\
biology.F o2sato.F sediment.F bbl.F\
\
MPI_Setup.F MessPass2D.F MessPass3D.F exchange.F\
autotiling.F\
\
zoom.F update2D.F set_nudgcof_fine.F\
zoombc_2D.F zoombc_3D.F uv3dpremix.F\
t3dpremix.F update3D.F zoombc_3Dfast.F\
Agrif2Model.F\
\
send_xios_diags.F\
\
cpl_prism_define.F cpl_prism_put.F cpl_prism_init.F\
cpl_prism_get.F cpl_prism_getvar.F cpl_prism_grid.F\
SRCS90 = \
par_pisces.F90 ocean2pisces.F90 trc.F90 sms_pisces.F90\
p4zche.F90 p4zint.F90 p4zlys.F90 p4zflx.F90\
p4zlim.F90 p4zsink.F90 p4zmicro.F90 p4zmeso.F90\
p4zmort.F90 p4zopt.F90 p4zprod.F90 p4zrem.F90\
p4zsbc.F90 p4zsed.F90 trcwri_pisces.F90\
p4zagg.F90 p4zfechem.F90 p4zligand.F90 p4zpoc.F90\
p4zsms.F90 p5zlim.F90 p5zmeso.F90\
p5zmicro.F90 p5zmort.F90 p5zprod.F90\
p4zbio.F90 trcsms_pisces.F90 trcini_pisces.F90\
pisces_ini.F90 oce_sed.F90 par_sed.F90 sedadv.F90\
sedarr.F90 sedbtb.F90 sedchem.F90 sedco3.F90\
seddiff.F90 seddsr.F90 seddta.F90 sed.F90\
sedini.F90 sedinitrc.F90 sedinorg.F90 sedmat.F90\
sedmbc.F90 sedmodel.F90 sed_oce.F90 sedorg.F90\
sedrst.F90 sedsfc.F90 sedstp.F90 sedwri.F90\
setavg_sed.F90\
\
module_parameter_oa.F90\
module_oa_time.F90 module_oa_space.F90 module_oa_periode.F90\
module_oa_variables.F90 module_oa_type.F90 module_oa_stock.F90\
module_oa_level.F90 module_oa_interface.F90\
module_oa_upd.F90 croco_oa.F90 var_oa.F90\
\
tooldatosec.F90 toolsectodat.F90 tooldecompdat.F90
\
AMRDIR = AGRIF/AGRIF_YOURFILES
#======================================================================
TOOLS = mpc cross_matrix cppcheck srcscheck checkkwds partit ncjoin ncrename
RCS = $(SRCS:.F=.f)
RCS90 = $(SRCS90:.F90=.f90)
OBJS = $(RCS:.f=.o)
OBJS90 = $(RCS90:.f90=.o)
SBIN = croco
AMRRCS=$(AMRSRCS:.F=.f)
AMROBJS=$(AMRRCS:.f=.o)
%.mod : %.o
@touch $@
#
# Everything
# ==========
all: tools depend $(SBIN)
#
# Executable file.
# ========= =====
#
$(SBIN): $(OBJS90) $(OBJS)
$(LDR) $(FFLAGS) $(LDFLAGS) -o a.out $(OBJS90) $(OBJS) $(LCDF) $(LMPI)
mv a.out $(SBIN)
#
# Auxiliary utility programs and List of Dependecies:
# ========= ======= ======== === ==== == ============
#
tools: $(TOOLS)
mpc: mpc.F
$(CPP) -P $(CPPFLAGS) mpc.F > mpc_.f
$(LDR) $(FFLAGS) $(LDFLAGS) -o mpc mpc_.f
cross_matrix: mpc cross_matrix.F
$(CPP) -P $(CPPFLAGS) cross_matrix.F | ./mpc > cross_matrix_.f
$(CFT) -c $(FFLAGS) cross_matrix_.f -o cross_matrix.o
$(LDR) $(FFLAGS) $(LDFLAGS) -o cross_matrix cross_matrix.o
cppcheck: mpc cppcheck.F
$(CPP) -P $(CPPFLAGS) cppcheck.F | ./mpc > cppcheck_.f
$(CFT) -c $(FFLAGS) cppcheck_.f -o cppcheck.o
$(LDR) $(FFLAGS) $(LDFLAGS) -o cppcheck cppcheck.o
srcscheck: mpc srcscheck.F
$(CPP) -P $(CPPFLAGS) srcscheck.F | ./mpc > srcscheck_.f
$(CFT) -c $(FFLAGS) srcscheck_.f -o srcscheck.o
$(LDR) $(FFLAGS) $(LDFLAGS) -o srcscheck srcscheck.o
rm -f check_srcs.F
checkkwds: mpc checkkwds.F
$(CPP) -P $(CPPFLAGS) checkkwds.F | ./mpc > checkkwds_.f
$(CFT) -c $(FFLAGS) checkkwds_.f -o checkkwds.o
$(LDR) $(FFLAGS) $(LDFLAGS) -o checkkwds checkkwds.o
rm -f setup_kwds.F
checkdefs: check_switches1.F setup_kwds.F
check_switches1.F: cppcheck cppdefs.h
cat cppdefs.h cppdefs_dev.h > mergcpp.txt
./cppcheck
check_srcs.F: srcscheck Makefile
./srcscheck
setup_kwds.F: checkkwds read_inp.F
./checkkwds
partit: partit.F insert_node.o lenstr.o
$(CPP) -P $(CPPFLAGS) partit.F > partit._.f
$(CFT) -c $(FFLAGS) partit._.f -o partit.o
$(LDR) $(FFLAGS) $(LDFLAGS) -o partit partit.o insert_node.o lenstr.o $(LCDF)
ncjoin: ncjoin.F lenstr.o
$(CPP) -P $(CPPFLAGS) ncjoin.F | ./mpc > ncjoin._.f
$(CFT) -c $(FFLAGS) ncjoin._.f -o ncjoin.o
$(LDR) $(FFLAGS) $(LDFLAGS) -o ncjoin ncjoin.o lenstr.o $(LCDF)
ncrename: ncrename.F lenstr.o
$(CPP) -P $(CPPFLAGS) ncrename.F | ./mpc > ncrename._.f
$(CFT) -c $(FFLAGS) ncrename._.f -o ncrename.o
$(LDR) $(FFLAGS) $(LDFLAGS) -o ncrename ncrename.o lenstr.o $(LCDF)
depend: checkdefs cross_matrix
./cross_matrix *.F90 *.F
mymodules: $(MOBJS) $(AMROBJS)
#
# Target to create tar file.
# ====== == ====== === =====
#
tarfile:
tar cvf croco.tar Make* *.h *.F *.F90 *.in *.in.*
#
# Cleaning:
# =========
#
rmtools:
/bin/rm -f $(TOOLS)
clean:
/bin/rm -rf core *.o $(AMRDIR)/*.o *.i *.s *.f *.f90 *.trace *.mod ${COMP_FILES}
clobber: clean
/bin/rm -rf $(SBIN) $(TOOLS) ./rii_files
plotter: plotter.F
f77 -n32 -o plotter plotter.F $(LIBNCAR)
#
# Special treatment for barrier function:
# THERE SHALL BE NO OPTIMIZATION HERE!!!!
#
my_barrier.o: my_barrier.f
$(CFT) -c -O0 my_barrier.f
#
# Include automatically generated dependency list:
#
-include Make.depend
! $Id: cppcheck.F 1458 2014-02-03 15:01:25Z gcambon $
!
!======================================================================
! CROCO is a branch of ROMS developped at IRD and INRIA, in France
! The two other branches from UCLA (Shchepetkin et al)
! and Rutgers University (Arango et al) are under MIT/X style license.
! CROCO specific routines (nesting) are under CeCILL-C license.
!
! CROCO website : http://www.croco-ocean.org
!======================================================================
!
program cppcheck
!
! PURPOSE: Scan all existing CPP-switches in file "cppdefs.h" and
! automatomatically generate file check_switches1.F which contains
! subroutine check_switches1. When later this file is compiled and
! executed a part of SCRUM/ROMS model, it creates log of activated
! CPP-switches.
!
! Algorithm: this program reads line-by-line file "cppdefs.h" and
! creates catalog of CPP-switches found there. It does not matter,
! whether switches are in defined or undefined status, either way
! they are put into catalog. For the purpose of this algorithm
! CPP-switch (CPP-macro name) is a word which follows a command
! (reserved word) of C-preprocessor, such as "ifdef", "define" etc.
! Conversely, a word which follows another word which is not a
! CPP-command is not considered as a CPP-macro name.
!
! For the purpopse of preceeding paragraph "word" means a consecutive
! string of nonblank and nonspecial characters (i.e. letters, digits
! and ! underscore '_').
!
! The algorithm works as follows:
!---- --------- ----- -- --------
! 0. reset catalog: arrays of names of CPP-switches and their sizes;
! 1. read line from the file; ignore all lines which do not have #;
! 2. find non-trivial length of that line;
! 3. set all symbols within C-style comments to blank (' ');
! 4. set all special characters to blank;
! 5. identify words within the modified line;
! 6. identify words which are CPP commands and CPP-macro names.
! 7. for each CPP-macro name encountered in (6) check whether it
! already listed in the catalog, and if not, place it there.
! 8. Once catalog is complete, generate code for checkdefs.
!
! Created by Alexander Shchepetkin <alex@atmos.ucla.edu> on May 2000.
!
implicit none
integer input,iout, maxstring, lstring
parameter (input=11, iout=12, maxstring=80)
character*80 string
integer nwords , nswitches,nexample
& , max_switches
parameter (nwords=16 , max_switches=1024)
integer istart(nwords), is , size(max_switches)
& , iend(nwords), ie,ln , line(max_switches)
logical macro(nwords) , example
character*32 switch(max_switches)
integer count, iocheck, i,k,n
logical end_of_file, comment, word, command, new
write(*,'(/1x,A,1x,A/)') 'This is CPPCHECK: Creating',
& 'new version of check_switches1.F.'
example=.true.
nexample=0 !
nswitches=0 ! Initialize catalog.
do i=1,max_switches ! reset/blank out arrays
size(i)=0 ! of sizes and names.
switch(i)=' '
enddo !!! 12345678901234567890123456789012
! open(input,file='cppdefs.h',status='old',form='formatted')
open(input,file='mergcpp.txt',status='old',form='formatted')
count=0 ! <-- reset counter of lines within the file.
end_of_file=.false. !
1 count=count+1 ! Read line from input file.
do i=1,maxstring ! Ignore all lines, which do
string(i:i)=' ' ! not start with #.
enddo !
read(input,'(A)',iostat=iocheck,end=2) string
if (string(1:1).ne.'#') goto 1 !
goto 3 ! Find length of the string,
2 end_of_file=.true. ! which is equal to position
! of the most right nonblank
3 lstring=maxstring+1 ! character.
4 lstring=lstring-1 !
if ((string(lstring:lstring).eq.' ').AND.(lstring.GT.1)) goto 4
!
! Suppress C-style comments and special characters.
!
n=0 ! <-- reset counter of comments within the string.
comment=.false.
i=1
5 i=i+1
if (.not.comment .and. string(i:i+1).eq.'/*') then
comment=.true.
n=n+1
istart(n)=i
elseif (comment .and. string(i:i+1).eq.'*/') then
comment=.false.
iend(n)=i+1
endif
if (i+1.lt.lstring) goto 5 !
if (comment) then ! If string ends as an open
lstring=istart(n)-1 ! comment, restrict lstring
n=n-1 ! and disregard all symbols
endif ! one right right from it.
do k=1,n !
do i=istart(k),iend(k) !
string(i:i)=' ' ! blank out C-style comments
enddo !
enddo ! Suppress special characters
do i=1,lstring
c* if (string(i:i).eq.'(' .or. string(i:i).eq.')' .or.
c* & string(i:i).eq.'&' .or. string(i:i).eq.'|' .or.
c* & string(i:i).eq.'!' .or. ichar(string(i:i)).eq.9)
c* & string(i:i)=' ' ! Character 9 is TaB symbol.
k=ichar(string(i:i))
if (k.lt.48 .or. (k.gt.57 .and. k.lt.65) .or. (k.gt.90
& .and. k.lt.95) .or. k.eq.96 .or. k.gt.122) string(i:i)=' '
enddo
!
! Identify words within the string, find starting and ending
! characters of each word. Since all special characters have
! been removed, at this point word is a sequence of non-blank
! characters.
!
n=0 ! <-- reset counter of words within the string.
word=.false.
i=1
6 i=i+1
if (string(i:i).ne.' ' .and. .not.word) then
word=.true.
n=n+1
istart(n)=i
elseif (string(i:i).eq.' ' .and. word) then
word=.false.
iend(n)=i-1
endif
if (i.lt.lstring) goto 6
if (word) iend(n)=i
c** write(*,'(/,I4,I4,/)') count, n ! Print out words.
c** do k=1,n
c** write(*,'(10x,80A1)') (string(i:i), i=istart(k),iend(k))
c** enddo !
! Identify CPP-commands (i.e.
command=.false. ! reserved words) and CPP-
do k=1,n ! macro names among the words
macro(k)=.false. ! of the line. Cancel example
is=istart(k) ! switch when encounter first
ie=iend(k) ! conditional CPP-command.
ln=ie-is+1 !
if (ln.eq.6 .and. string(is:ie).eq.'define') then
command=.true.
elseif (ln.eq.5 .and. string(is:ie).eq.'undef') then
command=.true.
elseif (ln.eq.2 .and. string(is:ie).eq.'if') then
command=.true.
example=.false.
elseif (ln.eq.5 .and. string(is:ie).eq.'ifdef') then
command=.true.
example=.false.
elseif (ln.eq.7 .and. string(is:ie).eq.'defined') then
command=.true.
example=.false.
elseif (ln.eq.4 .and. string(is:ie).eq.'elif') then
command=.true.
example=.false.
elseif (ln.eq.4 .and. string(is:ie).eq.'else') then
elseif (ln.eq.5 .and. string(is:ie).eq.'endif') then
elseif (ln.eq.7 .and. string(is:ie).eq.'include') then
elseif (command) then
command=.false.
macro(k)=.true.
c** elseif (string(istart(1):iend(1)) .ne. 'include') then
c** write (*,'(6x,A,1x,A,1x,I4,A1/8x,A)') 'CPPCHECK ERROR:',
c** & 'Unknown CPP-command on line', count, ':', string(is:ie)
endif
enddo
c** write(*,'(/,I4,I4,/)') count, n ! Print out CPP-macro names.
c** do k=1,n
c** if (macro(k)) then
c** write(*,'(10x,80A1)') (string(i:i),i=istart(k),iend(k))
c** endif
c** enddo
!
do k=1,n ! Scan catalog of previously
if (macro(k)) then ! discovered switches to find
is=istart(k) ! match with CPP-macro names
ie=iend(k) ! found in the present line.
ln=ie-is+1 ! If no match is found, add
new=.true. ! the new switch to the
do i=1,nswitches ! catalog.
if (ln.eq.size(i)) then !
if (string(is:ie).eq.switch(i)(1:ln)) new=.false.
endif
enddo
if (new) then
nswitches=nswitches+1
size(nswitches)=ln
switch(nswitches)(1:ln)=string(is:ie)
line(nswitches)=count
if (example) nexample=nexample+1
endif !
endif ! CPP-switches found prior
enddo ! to the first conditional
if (.not.end_of_file) goto 1 ! CPP-command correspond to
close(unit=input) ! predefined examples.
c** write(*,'(/,I4,/)') nswitches ! Print out catalog.
c** do i=1,nswitches
c** ln=size(i)
c** write(*,'(10x,I4,I4,2x,A)') line(i), ln, switch(i)(1:ln)
c** enddo
!
! Generate CPP-checking subroutine.
!
open (unit=iout,file='check_switches1.F',form='formatted')
write(iout,'(A/)') '#include "cppdefs.h"'
write(iout,'(/6x,A/)') 'subroutine check_switches1 (ierr)'
write(iout,'(4(A,1x,A/),A,14x,A/A,1x,A,3x,A/A,14x,A/A,22x,A)')
& '!!!!!! WARNING: THIS IS A MACHINE GENERATED',
& 'CODE, DO NOT EDIT! !!!!!!',
& '!!!!!! This file needs to be updated only if',
& 'new CPP-switches !!!!!!',
& '!!!!!! were introduced into "cppdefs.h".',
& ' NO ACTION IS NEEDED !!!!!!',
& '!!!!!! if changes in "cppdefs.h" are limited',
& 'to activation or !!!!!!',
& '!!!!!! deactivation of previously known switches.','!!!!!!',
& '!!!!!! To refresh this file compile and execute',
& '"cppcheck.F"', '!!!!!!',
& '!!!!!! as an independent program, or use commands','!!!!!!',
& '!!!!!! "make checkdefs" or "make depend".', '!!!!!!'
write(iout,'(A,20x,I3,1x,A/A,23x,I3,1x,A)')
& '!!!!!! Number of Configuration Choices:',nexample, '!!!!!!',
& '!!!!!! Total number of CPP-switches:', nswitches, '!!!!!!'
write(iout,'(2(/6x,A), 5(/A) /6x,A /5x,A1,6x,A, 5(/6x,A))')
& 'implicit none', 'integer ierr, is,ie, iexample',
& '#include "param.h"', '#include "strings.h"',
& '#ifdef MPI', '# include "scalars.h"', '#endif',
& 'MPI_master_only write(stdout,''(/1x,A/)'')', '&',
& '''Activated C-preprocessing Options:''',
& 'do is=1,max_opt_size', ' Coptions(is:is)='' ''', 'enddo',
& 'iexample=0', 'is=1'
do i=1,nswitches
ln=size(i)
write(iout,'(A,1x,A)') '#ifdef', switch(i)(1:ln)
if (i.le.nexample) write(iout,'(6x,A)') 'iexample=iexample+1'
write(iout,'(6x,A,1x,A1,A,A1)')
& 'MPI_master_only write(stdout,''(10x,A)'')',
& '''', switch(i)(1:ln), ''''
write(iout,'(6x,A7,I2/6x,A/6x,A,A,A1/6x,A/6x,A/A)')
& 'ie=is +', ln-1, 'if (ie.ge.max_opt_size) goto 99',
& 'Coptions(is:ie)=''', switch(i)(1:ln), '''',
& 'Coptions(ie+1:ie+1)='' ''', 'is=ie+2', '#endif'
enddo
write(iout,'(6x,A/6x,A/8x,A/5x,A1,1x,A/8x,A/6x,A)')
& 'MPI_master_only write(stdout,''(/)'')',
& 'if (iexample.eq.0) then',
& 'MPI_master_only write(stdout,''(1x,A)'')', '&',
& '''ERROR in "cppdefs.h": no configuration is specified.''',
& 'ierr=ierr+1', 'elseif (iexample.gt.1) then'
write(iout,'(8x,A/5x,A1,1x,A/8x,A/6x,A/6x,A)')
& 'MPI_master_only write(stdout,''(1x,A)'')', '&',
& '''ERROR: more than one configuration in "cppdefs.h".''',
& 'ierr=ierr+1', 'endif', 'return'
write(iout,'(2x,A/5x,A1,2x,A,1x,A/5x,A1,2x,A,1x,A)')
& '99 MPI_master_only write(stdout,''(/1x,A,A/14x,A)'')',
& '&', '''CHECKDEFS -- ERROR: Unsufficient size of string',
& 'Coptions'',', '&', '''in file "strings.h".'',',
& '''Increase the size it and recompile.'''
write(iout,'(6x,A,2(/6x,A))') 'ierr=ierr+1', 'return', 'end'
close(unit=iout)
stop
end
This diff is collapsed.
This diff is collapsed.
#!/bin/bash
####################################################
# COMPILATION JOB #
####################################################
# This script assumes default compilation options, to
# change those options :
# it can either be edited to add your own options
# or take into account the following
# environment variables for compilation choices :
#
# CROCO_NETCDFLIB : netcdf library
# CROCO_NETCDFINC : netcdf include
# CROCO_PRISM_ROOT_DIR : OASIS-MCT directory
# CROCO_XIOS_ROOT_DIR : XIOS directory
#
# CROCO_CFT1 : compiler
# CROCO_FFLAGS1 : compilation otpions