Changeset fe118c0 in flexpart.git


Ignore:
Timestamp:
May 7, 2020, 2:59:59 PM (4 years ago)
Author:
pesei <petra.seibert at univie.ac.at>
Branches:
10.4.1_pesei, bugfixes+enhancements, release-10.4.1, scaling-bug
Children:
5cbd51b
Parents:
3d7eebf
Message:

Correct makefile w.r.t. netcdf yes/no and grib_api dependencies
Cosmetic correction on verttransform_ecmwf.f90

Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/makefile

    rc56da45 rfe118c0  
     1# SPDX-FileCopyrightText: FLEXPART 1998-2019, see flexpart_license.txt
     2# SPDX-License-Identifier: GPL-3.0-or-later
     3
    14SHELL = /bin/bash
    2 ################################################################################
     5
     6##############################################################
    37#  DESCRIPTION
    4 #    Makefile for FLEXPART. Standard (serial) and parallel (MPI) version
    5 #
    6 #    Dependencies are resolved in this makefile, so parallel make is
    7 #    possible ("make -j")
    8 #
    9 #    At NILU we have installed gcc-4.9.1 and libraries under user /homevip/flexpart
    10 #    ("ROOT_DIR")
    11 #    To use gfortran version 4.9, add "gcc=4.9" to the make command, e.g.
    12 #       'make -j ecmwf gcc=4.9',
    13 #    also set environment variable LD_LIBRARY_PATH to point to compiler libraries
    14 #
    15 #    Makefile was modified to produce unified executable for both ECMWF and GFS meteo data formats
    16 #    gributils were included to detect format of meteo data
    17 #
    18 #    Cpp directives USE_MPIINPLACE were added to three source files. The effect of these directives
    19 #    are to enable the MPI_IN_PLACE option only if compiled with a -DUSE_MPIINPLACE directive.
    20 #    Otherwise, a safer option (which requires the allocation of another array) is used by default.
    21 #    In makefile added the -x f95-cpp-input flag for compiling of cpp directives.
     8#    Makefile for FLEXPART.
     9#    Standard (serial) and parallel (MPI) version
     10#
     11#    Dependencies are resolved in this makefile,
     12#    so parallel make is possible ("make -j")
     13#
     14#    At NILU we have installed gcc-4.9.1 and libraries under
     15#    user /homevip/flexpart ("ROOT_DIR"). You may adapt that
     16#    for your needs; also set environment variable
     17#    LD_LIBRARY_PATH to point to compiler libraries if not in
     18#    the standard location
     19#    There are different definitions of paths included below
     20#    You have to comment them in or out according to your
     21#    environment, or adapt them!
     22#
     23#    cpp directives USE_MPIINPLACE were added to three 
     24#    source files. The effect of these directives is to enable
     25#    the MPI_IN_PLACE option only if compiled with a
     26#    -DUSE_MPIINPLACE directive. Otherwise, a safer option
     27#    (which requires the allocation of another array) is used by default.
     28#    -x f95-cpp-input added  for compiling of cpp directives.
    2229#
    2330#  USAGE
    2431#    Compile serial FLEXPART
    2532#      make [-j] serial
     33#    or simply
     34#      make [-j]
    2635#
    2736#    Compile parallel FLEXPART
     
    5059FLEXPART-SERIAL = FLEXPART
    5160
    52 
    53 ifeq ($(gcc), 4.9)
    54 # Compiled libraries under user ~flexpart, gfortran v4.9
    55         ROOT_DIR = /homevip/flexpart/
    56 
    57         F90       = ${ROOT_DIR}/gcc-4.9.1/bin/gfortran
    58         MPIF90    = ${ROOT_DIR}/bin/mpifort
    59 
    60         INCPATH1  = ${ROOT_DIR}/gcc-4.9.1/include       
    61         INCPATH2  = ${ROOT_DIR}/include
    62         LIBPATH1 = ${ROOT_DIR}/lib
    63 else
    64 # Compiled libraries under user ~flexpart, gfortran v5.4
    65         ROOT_DIR = /homevip/flexpart/
    66 
    67         F90       = /usr/bin/gfortran
    68         MPIF90    = /usr/bin/mpifort
    69 
    70         INCPATH1  = ${ROOT_DIR}/gcc-5.4.0/include       
    71         INCPATH2  = /usr/include
    72         LIBPATH1 = ${ROOT_DIR}/gcc-5.4.0/lib
    73 endif
    74 
     61# the following is for NILU only
     62
     63#ifeq ($(gcc), 4.9)
     64## Compiled libraries under user ~flexpart, gfortran v4.9
     65#       ROOT_DIR = /homevip/flexpart/
     66#
     67#       F90       = ${ROOT_DIR}/gcc-4.9.1/bin/gfortran
     68#       MPIF90    = ${ROOT_DIR}/bin/mpifort
     69#
     70#       INCPATH1  = ${ROOT_DIR}/gcc-4.9.1/include       
     71#       INCPATH2  = ${ROOT_DIR}/include
     72#       LIBPATH1  = ${ROOT_DIR}/lib
     73#else
     74## Compiled libraries under user ~flexpart, gfortran v5.4
     75#       ROOT_DIR = /homevip/flexpart/
     76#
     77#       F90       = /usr/bin/gfortran
     78#       MPIF90    = /usr/bin/mpifort
     79#
     80#       INCPATH1  = ${ROOT_DIR}/gcc-5.4.0/include       
     81#       INCPATH2  = /usr/include
     82#       LIBPATH1  = ${ROOT_DIR}/gcc-5.4.0/lib
     83#endif
     84
     85# the following works on a Debian stretch machine
     86
     87        F90       = gfortran
     88        MPIF90    = mpifort
     89
     90        INCPATH1  = /usr/include/
     91        INCPATH2  = ./
     92        LIBPATH1  = /usr/lib/
     93
     94# the following works on a Debian buster (and probably newer) machine
     95#       F90       = gfortran
     96#       MPIF90    = mpifort
     97#
     98#       INCPATH1  = /usr/lib/x86_64-linux-gnu/fortran/gfortran-mod-15
     99#       INCPATH2  = /usr/include
     100#       LIBPATH1  = /usr/lib/x86_64-linux-gnu/
    75101
    76102### Enable netCDF output?
     
    88114
    89115## OPTIMIZATION LEVEL
    90 O_LEV = 0 # [0,1,2,3,g,s,fast]
    91 O_LEV_DBG = g # [0,g]
     116O_LEV = 2 # [0,1,2,3,g,s,fast] # 0 may give trouble; then use -mcmdoel=large
     117O_LEV_DBG = 0 # [0,g] # use g only for debugging
    92118
    93119## LIBRARIES
    94 #LIBS = -lgrib_api_f90 -lgrib_api -lm -ljasper -lnetcdff
    95120LIBS = -lgrib_api_f90 -lgrib_api -lm -ljasper $(NCOPT)
    96121
    97 FFLAGS   = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV) -g -cpp -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 -flto=jobserver -O$(O_LEV) $(NCOPT) $(FUSER)  #-Warray-bounds -fcheck=all # -march=native
    98 
    99 DBGFLAGS = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV_DBG) -g3 -ggdb3 -cpp -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 -flto=jobserver -O$(O_LEV_DBG) $(NCOPT) -fbacktrace   -Wall  -fdump-core $(FUSER)  #  -ffpe-trap=invalid,overflow,denormal,underflow,zero  -Warray-bounds -fcheck=all
    100 
    101 LDFLAGS  = $(FFLAGS) -L$(LIBPATH1) -Wl,-rpath,$(LIBPATH1) $(LIBS) #-L$(LIBPATH2)
    102 LDDEBUG  = $(DBGFLAGS) -L$(LIBPATH1) $(LIBS) #-L$(LIBPATH2)
     122FFLAGS   = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV) -g -cpp -m64 -mcmodel=medium \
     123           -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 \
     124           -flto=jobserver -O$(O_LEV) $(NCOPT) $(FUSER)  #-Warray-bounds -fcheck=all # -march=native
     125
     126DBGFLAGS = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV_DBG) -g3 -ggdb3 -cpp \
     127           -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4  \
     128           -fmessage-length=0 -flto=jobserver -O$(O_LEV_DBG) $(NCOPT) \
     129           -fbacktrace   -Wall  -fdump-core $(FUSER) -fcheck=all #\
     130            #  -ffpe-trap=invalid,overflow,denormal,underflow,zero
     131
     132LDFLAGS  = $(FFLAGS) -L$(LIBPATH1) -Wl,-rpath,$(LIBPATH1) $(LIBS)
     133LDDEBUG  = $(DBGFLAGS) -L$(LIBPATH1) $(LIBS)
    103134
    104135MODOBJS = \
     
    147178        readwind_ecmwf_mpi.o
    148179
    149 OBJECTS_NCF = netcdf_output_mod.o
     180ifeq ($(ncf), yes)
     181        OBJECTS_NCF = netcdf_output_mod.o
     182endif
    150183
    151184OBJECTS = \
     
    258291        random_mod.o
    259292calcfluxes.o: com_mod.o flux_mod.o outg_mod.o par_mod.o
    260 calcmatrix.o: com_mod.o conv_mod.o par_mod.o
    261 calcpar.o: com_mod.o par_mod.o
     293calcmatrix.o: com_mod.o conv_mod.o par_mod.o class_gribfile_mod.o
     294calcpar.o: com_mod.o par_mod.o class_gribfile_mod.o
    262295calcpar_nests.o: com_mod.o par_mod.o
    263296calcpv.o: com_mod.o par_mod.o
     
    292325conv_mod.o: par_mod.o
    293326convect43c.o: conv_mod.o par_mod.o
    294 convmix.o: com_mod.o conv_mod.o flux_mod.o par_mod.o
     327convmix.o: com_mod.o conv_mod.o flux_mod.o par_mod.o class_gribfile_mod.o
    295328coordtrafo.o: com_mod.o par_mod.o point_mod.o
    296 detectformat.o: com_mod.o par_mod.o
     329detectformat.o: com_mod.o par_mod.o class_gribfile_mod.o
    297330distance.o: par_mod.o
    298331distance2.o: par_mod.o
     
    300333drydepokernel_nest.o: com_mod.o par_mod.o unc_mod.o
    301334erf.o: par_mod.o
    302 FLEXPART.o: com_mod.o conv_mod.o netcdf_output_mod.o par_mod.o point_mod.o \
     335ifeq ($(ncf), yes)
     336        FLEXPART.o: com_mod.o conv_mod.o par_mod.o point_mod.o random_mod.o netcdf_output_mod.o class_gribfile_mod.o \
    303337        random_mod.o
    304 FLEXPART_MPI.o: com_mod.o conv_mod.o mpi_mod.o netcdf_output_mod.o par_mod.o \
    305         point_mod.o random_mod.o
     338        FLEXPART_MPI.o: com_mod.o conv_mod.o mpi_mod.o netcdf_output_mod.o par_mod.o \
     339        point_mod.o random_mod.o class_gribfile_mod.o
     340        netcdf_output_mod.o: com_mod.o mean_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o
     341        timemanager.o: com_mod.o flux_mod.o netcdf_output_mod.o oh_mod.o outg_mod.o \
     342        par_mod.o point_mod.o unc_mod.o xmass_mod.o
     343        timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o netcdf_output_mod.o \
     344        oh_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o xmass_mod.o
     345else       
     346        FLEXPART.o: com_mod.o conv_mod.o par_mod.o point_mod.o random_mod.o  class_gribfile_mod.o random_mod.o
     347        FLEXPART_MPI.o: com_mod.o conv_mod.o mpi_mod.o par_mod.o point_mod.o random_mod.o class_gribfile_mod.o
     348        timemanager.o: com_mod.o flux_mod.o oh_mod.o outg_mod.o \
     349        par_mod.o point_mod.o unc_mod.o xmass_mod.o
     350        timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o \
     351        oh_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o xmass_mod.o
     352endif
    306353fluxoutput.o: com_mod.o flux_mod.o outg_mod.o par_mod.o
    307354get_settling.o: com_mod.o par_mod.o
    308355get_vdep_prob.o: com_mod.o interpol_mod.o par_mod.o point_mod.o
    309356get_wetscav.o: com_mod.o par_mod.o point_mod.o
    310 getfields.o: com_mod.o par_mod.o
    311 getfields_mpi.o: com_mod.o mpi_mod.o par_mod.o
     357getfields.o: com_mod.o par_mod.o class_gribfile_mod.o
     358getfields_mpi.o: com_mod.o mpi_mod.o par_mod.o class_gribfile_mod.o
    312359gethourlyOH.o: com_mod.o oh_mod.o par_mod.o
    313360getrb.o: par_mod.o
     
    346393mean_mod.o: par_mod.o
    347394mpi_mod.o: com_mod.o par_mod.o unc_mod.o
    348 netcdf_output_mod.o: com_mod.o mean_mod.o outg_mod.o par_mod.o point_mod.o \
    349         unc_mod.o
    350 obukhov.o: par_mod.o
     395obukhov.o: par_mod.o class_gribfile_mod.o
    351396ohreaction.o: com_mod.o oh_mod.o par_mod.o
    352397openouttraj.o: com_mod.o par_mod.o point_mod.o
     
    394439releaseparticles_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o \
    395440        random_mod.o xmass_mod.o
    396 richardson.o: par_mod.o
     441richardson.o: par_mod.o class_gribfile_mod.o
    397442scalev.o: par_mod.o
    398443shift_field.o: par_mod.o
    399444shift_field_0.o: par_mod.o
    400 timemanager.o: com_mod.o flux_mod.o netcdf_output_mod.o oh_mod.o outg_mod.o \
    401         par_mod.o point_mod.o unc_mod.o xmass_mod.o
    402 timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o netcdf_output_mod.o \
    403         oh_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o xmass_mod.o
    404445unc_mod.o: par_mod.o
    405446verttransform_ecmwf.o: cmapf_mod.o com_mod.o par_mod.o
  • src/verttransform_ecmwf.f90

    r92fab65 rfe118c0  
    3737!*****************************************************************************
    3838! Date: 2017-05-30 modification of a bug in ew. Don Morton (CTBTO project)   *
     39!*****************************************************************************
     40! PS 2020-07-05:
     41! remove superfluous comma in write, write and open to lowercase
    3942!*****************************************************************************
    4043!                                                                            *
     
    727730!teller(:)=0
    728731virr=virr+1
    729 WRITE(aspec, '(i3.3)'), virr
     732write(aspec, '(i3.3)') virr
    730733
    731734!if (readclouds) then
     
    775778!OPEN(UNIT=114, FILE=fnameD,FORM='FORMATTED',STATUS = 'UNKNOWN')
    776779!else
    777 OPEN(UNIT=115, FILE=fnameH,FORM='FORMATTED',STATUS = 'UNKNOWN')
    778 OPEN(UNIT=116, FILE=fnameI,FORM='FORMATTED',STATUS = 'UNKNOWN')
    779 OPEN(UNIT=117, FILE=fnameJ,FORM='FORMATTED',STATUS = 'UNKNOWN')
     780open(unit=115, file=fnameh,form='formatted',status = 'unknown')
     781open(unit=116, file=fnamei,form='formatted',status = 'unknown')
     782open(unit=117, file=fnamej,form='formatted',status = 'unknown')
    780783!endif
    781784!
     
    799802!CLOSE(114)
    800803!else
    801 CLOSE(115)
    802 CLOSE(116)
    803 CLOSE(117)
     804close(115)
     805close(116)
     806close(117)
    804807endif
    805808!endif
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG