diff --git a/CMakeCacheFiles/example b/CMakeCacheFiles/example index 6f1cdf80446725c41037668a8d6c1cf47af7ad95..6d5add9a4fe00fa0c17b5ce93fe28b5a11abf86f 100644 --- a/CMakeCacheFiles/example +++ b/CMakeCacheFiles/example @@ -1,6 +1,5 @@ ##-D CMAKE_WITH_MPI:STRING=ON set(CMAKE_WITH_MPI OFF CACHE STRING "build the module with MPI, so it can be executed using mpirun") -#set(CMAKE_MRM2MHM OFF CACHE STRING "If set to ON the model runs with mRM") #set(CMAKE_pgiFortran ON CACHE STRING "Code exchange for pgi compiler dependent issues") #set(CMAKE_MPR_STANDALONE ON CACHE STRING "If set to ON, only MPR is compiled") #set(CMAKE_ABSOFT ON CACHE STRING "Documentation to be added. If you you are developer, you might edit this string in CMakeLists.txt") diff --git a/CMakeLists.txt b/CMakeLists.txt index d7da43e732caa894196a4b36b347edc9af160445..aba75743d45539fda1d038f002fd8351086d83dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -125,7 +125,7 @@ endif() include_directories(${NETCDF_INCLUDES} ${MPI_Fortran_INCLUDE_PATH} ${OpenMP_Fortran_LIBRARY}) -# ifort and gfortran need the flag -cpp to interpret definitions like -DMRM2MHM +# ifort and gfortran need the flag -cpp to interpret pre-processor directives # the nag compiler is not able to interpret the flag -cpp but can interpret these definitions anyway # so we check whether the compiler is able to use the flag -cpp # for that we need the module CheckFortranCompilerFlag @@ -157,10 +157,7 @@ if (FPP_FLAG) set(ADDITIONAL_GCC_FLAGS "-fpp") endif() -# Add definitions. These should later be set via the cache line file and only -# have a default value here. These part only concerns user build definitions like MRM2MHM -#add_definitions(-DMRM2MHM=.true.) -cpp_definitions("-DMRM2MHM" "CMAKE_MRM2MHM" "ON" "If set to ON the model runs with mRM") +# Add definitions. These should later be set via the cache line file and only have a default value here. cpp_definitions("-DpgiFortran" "CMAKE_pgiFortran" "OFF" "Code exchange for pgi compiler dependent issues") cpp_definitions("-DMPR_STANDALONE" "CMAKE_MPR_STANDALONE" "OFF" "If set to ON, only MPR is compiled") cpp_definitions("-DABSOFT" "CMAKE_ABSOFT" "OFF" "Documentation to be added. If you you are developer, you might edit this string in CMakeLists.txt") diff --git a/Makefile_mrm b/Makefile_mrm deleted file mode 100644 index 55bb5bd32f322b39c482f2f93ee5d727e751e82c..0000000000000000000000000000000000000000 --- a/Makefile_mrm +++ /dev/null @@ -1,1093 +0,0 @@ -# -*- Makefile -*- -# -# PURPOSE -# CHS Makefile for Fortran, C and mixed projects -# -# CALLING SEQUENCE -# make [options] [VARIABLE=VARIABLE ...] [targets] -# -# Variables can be set on the command line [VAR=VAR] or in the section SWITCHES below. -# -# If $(PROGNAME) is given, an executable will be compiled. -# If $(LIBNAME) is given, a library will be created. -# -# Sources are in $(SRCPATH), which can be several directories separated by whitespace. -# -# File suffixes can be given in $(F90SUFFIXES), $(F77SUFFIXES), and $(CSUFFIXES) -# Default Fortran 90 is: .f90, .F90, .f95, .F95, .f03, .F03, .f08, .F08 -# Default Fortran 77 is: .f, .F, .for, .FOR, .f77, .F77, .ftn, .FTN -# Default C is: .c, .C -# -# TARGETS -# all (default), check (=test), clean, cleanclean, cleancheck (=cleantest=checkclean=testclean), -# dependencies (=depend), html, pdf, latex, doxygen, info -# -# OPTIONS -# All make options such as -f makefile. See 'man make'. -# -# VARIABLES -# All variables defined in this makefile. -# This makefile has lots of conditional statements depending on variables. -# If the variable works as a switch then the condition checks for variable = true, -# i.e. ifeq ($(variable),true) -# otherwise the variable can have any other value. -# See individual variables in section SWITCHES below or type 'make info'. -# -# Variables can be empty for disabling a certain behaviour, -# e.g. if you do not want to use IMSL, set: imsl=no or imsl= -# -# For main variables see 'make info'. -# -# DEPENDENCIES -# This makefile uses the following files: -# $(MAKEDPATH)/make.d.sh, $(CONFIGPATH)/$(system).$(compiler), $(CONFIGPATH)/$(system).alias -# The default $(MAKEDPATH) and $(CONFIGPATH) is make.config -# The makefile can use doxygen for html and pdf automatic documentation. -# It is then using $(DOXCONFIG). -# If this is not available, it uses the perl script f2html for html documentation: -# $(CONFIGPATH)/f2html, $(CONFIGPATH)/f2html.fgenrc -# -# RESTRICTIONS -# Not all packages work with or are compiled for all compilers. -# The static switch is maintained like a red-headed stepchild. Libraries might be not ordered correctly -# if static linking and --begin-group/--end-group is not supported. -# -# C-file dependencies are generated with -# $(CC) -E $(DEFINES) -MM -# -# EXAMPLE -# make system=eve compiler=intel release=debug mkl=mkl95 PROGNAME=prog -# -# NOTES -# Further information is given in the README, for example on -# the repository of the makefile, -# further reading, -# how to add a new compiler on a given system, or -# how to add a new system. -# -# LICENSE -# This file is part of the UFZ makefile project. -# -# The UFZ makefile project is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# The UFZ makefile project is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with the UFZ makefile project (cf. gpl.txt and lgpl.txt). -# If not, see . -# -# Copyright 2011-2018 Matthias Cuntz -# -# Written Matthias Cuntz, Nov. 2011 - mc (at) macu.de -# Modified Matthias Cuntz, Juliane Mai, Stephan Thober, UFZ Leipzig, Germany - -SHELL = /bin/bash - -# -# --- SWITCHES ------------------------------------------------------- -# - -# . is current directory, .. is parent directory -SRCPATH := src/lib src/common src/mRM src/common_mHM_mRM src/MPR # ./src/mHM # where are the source files -PROGPATH := . # where shall be the executable -CONFIGPATH := make.config # where are the $(system).$(compiler) files -MAKEDPATH := $(CONFIGPATH) # where is the make.d.sh script -CHECKPATH := . # path for $(CHECKPATH)/test* and $(CHECKPATH)/check* directories if target is check -DOXCONFIG := ./doc/doxygen-1.8.8.config # the doxygen config file -# -PROGNAME := mrm # mhm # Name of executable -LIBNAME := #libminpack.a # Name of library -# -# Options -# Systems: eve and personal computers such as mcimac for Matthias Cuntz' iMac; look in $(MAKEDPATH) or type 'make info' -system := eve -# Compiler: intelX, gnuX, nagX, sunX, where X stands for version number, e.g. intel13; -# look at $(MAKEDPATH)/$(system).alias for shortcuts or type 'make info' -compiler := gnu -# Releases: debug, release -release := release -# Netcdf versions (Network Common Data Form): netcdf3, netcdf4, [anything else] -netcdf := netcdf4 -# LAPACK (Linear Algebra Pack): true, [anything else] -lapack := -# MKL (Intel's Math Kernel Library): mkl, mkl95, [anything else] -mkl := -# Proj4 (Cartographic Projections Library): true, [anything else] -proj := -# IMSL (IMSL Numerical Libraries): vendor, imsl, [anything else] -imsl := -# OpenMP parallelization: true, [anything else] -openmp := -# MPI parallelization - experimental: true, [anything else] -mpi := -# Linking: static, shared, dynamic (last two are equal) -static := dynamic - -# The Makefile sets the following variables depending on the above options: -# FC, FCFLAGS, F90, F90FLAGS, CC, CFLAGS, CPP, DEFINES, INCLUDES, LD, LDFLAGS, LIBS -# flags, defines, etc. will be set incremental. They will be initialised with -# the following EXTRA_* variables. This allows for example to set an extra compiler -# option or define a preprocessor variable such as: EXTRA_DEFINES := -DNOGUI -DDPREC -# -# -# The Makefile compiles all files found in the source directories. -# If you want excludes files from compilation, set EXCLUDE_FILES, e.g. -# make EXCLUDE_FILES="*mpi*.f90" -# -# -# Specific notes -# If you encounter error messages during linking such as -# ... relocation truncated to fit: R_X86_64_PC32 against ... -# then you ran out of memory address space, i.e. some hard-coded numbers in the code got too big. -# Check that you have set the 64-bit addressing model in the F90FLAGS and LDFAGS: -m64 -# On *nix systems, you can set the addressing model with -mcmodel=medium (F90FLAGS and LDFAGS) for gfortran and intel. -# Intel might also need -shared-intel at the LDFLAGS, i.e. -# EXTRA_F90FLAGS := -mcmodel=medium -# EXTRA_LDFLAGS := -mcmodel=medium -shared-intel -# -# If you encouter the following error with the intel compiler (compiler bug): -# 0_10708 -# : catastrophic error: **Internal compiler error: internal abort** Please report this error along with the -# circumstances in which it occurred in a Software Problem Report. -# Note: File and line given may not be explicit cause of this error. -# then you probably assume the F2003 feature that arrays can be allocated as a result of a function. -# Add the file afected to the list -# INTEL_EXCLUDE -# below. This will not set the compiler flag -assume realloc-lhs. -# If this does not work, try to reduce the optimisation in the make.config files (e.g. -O1) -# -# -# Specific notes on optimisation and debugging -# INTEL optimisation: -fast (=-ipo -O3 -static) -# -fast Multifile interprocedure optimization -# INTEL debug: -fpe=0 -fpe-all=0 -no-ftz -ftrapuv -# -fpe=0 -fpe-all=0 errors on all floating point exceptions except underflow. -# -no-ftz catches then also all underflows. -# -ftrapuv sets undefined numbers to arbitrary values so that floating point exceptions kick in. -# SUN optimisation: -xipo=2 -# -xipo=n 0 disables interprocedural analysis, 1 enables inlining across source files, -# 2 adds whole-program detection and analysis. -# SUN debug: -ftrap=%all, %none, common, [no%]invalid, [no%]overflow, [no%]underflow, [no%]division, [no%]inexact. -# -ftrap=%n Set floating-point trapping mode. -# NAG debug: -C=undefined -C=intovf -# -C=undefined is also checking 0-strings. Function nonull in UFZ mo_string_utils will stop with error. -# -C=undefined must be used on all routines, i.e. also on netcdf for example. -# This means that all tests do not work which use netcdf and/or lapack. -# -C=intovf check integer overflow, which is intentional in UFZ mo_xor4096. - -# Special compilation flags -EXTRA_FCFLAGS := -EXTRA_F90FLAGS := #-C=undefined -EXTRA_INCLUDES := -EXTRA_DEFINES := #-DMRM2MHM -EXTRA_LDFLAGS += #-Wl,--stack,12485760 -EXTRA_LIBS := -EXTRA_CFLAGS += #-Wl,--stack,12485760 - - -# Intel F2003 -assume realloc-lhs -INTEL_EXCLUDE := mo_multi_param_reg.f90 mo_mpr_soilmoist.f90 mo_read_wrapper.f90 - -# Exclude certin files from compilation -EXCLUDE_FILES := - -# Fortran 90 file endings: .f90 .F90 .f95 .F95 .f03 .F03 .f08 .F08 -F90SUFFIXES = .f90 .F90 .f95 .F95 .f03 .F03 .f08 .F08 -# Fortran 77 file endings: .f .F .for .FOR .f77 .F77 .ftn .FTN -F77SUFFIXES = .f .F .for .FOR .f77 .F77 .ftn .FTN -# C file endings: .c .C -CSUFFIXES = .c .C -# Library file endings: .a .so .dylib -LIBSUFFIXES = .a .so .dylib - -# -# --- CHECK 0 --------------------------------------------------- -# - -# Check available switches -ifeq (,$(findstring $(release),debug release)) - $(error Error: release '$(release)' not found: must be in 'debug release') -endif - -ifneq ($(netcdf),) - ifeq (,$(findstring $(netcdf),netcdf3 netcdf4)) - $(error Error: netcdf '$(netcdf)' not found: must be in 'netcdf3 netcdf4') - endif -endif - -ifeq (,$(findstring $(static),static shared dynamic)) - $(error Error: static '$(static)' not found: must be in 'static shared dynamic') -endif - -# -# --- PATHS ------------------------------------------------ -# - -# Make absolute pathes from relative pathes - there should be no space nor comment at the end of the next lines -SRCPATH := $(abspath $(SRCPATH:~%=${HOME}%)) -PROGPATH := $(abspath $(PROGPATH:~%=${HOME}%)) -CONFIGPATH := $(abspath $(CONFIGPATH:~%=${HOME}%)) -MAKEDPATH := $(abspath $(MAKEDPATH:~%=${HOME}%)) -CHECKPATH := $(abspath $(CHECKPATH:~%=${HOME}%)) -DOXCONFIG := $(abspath $(DOXCONFIG:~%=${HOME}%)) -#$(info "DOXCONFIG: "$(DOXCONFIG)) - -# Program names -# Only Prog or Lib -ifeq ($(strip $(PROGNAME)),) - ifeq ($(strip $(LIBNAME)),) - $(error Error: PROGNAME or LIBNAME must be given.) - else - islib := True - LIBNAME := $(PROGPATH)/$(strip $(LIBNAME)) - endif -else - ifeq ($(strip $(LIBNAME)),) - islib := False - PROGNAME := $(PROGPATH)/$(strip $(PROGNAME)) - else - $(error Error: only one of PROGNAME or LIBNAME can be given.) - endif -endif - -MAKEDSCRIPT := make.d.sh -MAKEDEPSPROG := $(MAKEDPATH)/$(MAKEDSCRIPT) - -# some targets should not compiler the code first, e.g. producing documentation -# but some targets should not recompile but be aware of the source files, e.g. clean -iphony := False -iphonyall := False -ifneq ($(strip $(MAKECMDGOALS)),) - ifneq ($(findstring /$(strip $(MAKECMDGOALS))/,/check/ /test/ /html/ /latex/ /pdf/ /doxygen/),) - iphony := True - endif - ifneq (,$(findstring $(strip $(MAKECMDGOALS))/,/check/ /test/ /html/ /latex/ /pdf/ /doxygen/ /cleancheck/ /cleantest/ /checkclean/ /testclean/ /info/ /clean/ /cleanclean/)) - iphonyall := True - endif -endif - -# -# --- CHECK 1 --------------------------------------------------- -# - -systems := $(shell ls -1 $(CONFIGPATH) | sed -e "/$(MAKEDSCRIPT)/d" -e '/f2html/d' | cut -d '.' -f 1 | sort | uniq) -ifeq (,$(findstring $(system),$(systems))) - $(error Error: system '$(system)' not found: known systems are $(systems)) -endif - -# -# --- ALIASES --------------------------------------------------- -# - -# Include compiler alias on specific systems, e.g. nag for nag53 -icompiler := $(compiler) -ALIASINC := $(CONFIGPATH)/$(system).alias -ifneq ($(strip $(ALIASINC)),) - include $(ALIASINC) -endif - -# -# --- CHECK 2 --------------------------------------------------- -# - -compilers := $(shell ls -1 $(CONFIGPATH) | sed -e "/$(MAKEDSCRIPT)/d" -e '/f2html/d' -e '/alias/d' -e '/~$$/d' | grep $(system) | cut -d '.' -f 2 | sort | uniq) -gnucompilers := $(filter gnu%, $(compilers)) -nagcompilers := $(filter nag%, $(compilers)) -intelcompilers := $(filter intel%, $(compilers)) -ifeq (,$(findstring $(icompiler),$(compilers))) - $(error Error: compiler '$(icompiler)' not found: configured compilers for system $(system) are $(compilers)) -endif - -# -# --- SOURCE FILES --------------------------------------------------- -# - -# ASRCS contain Fortran 90 source dir informations -ifeq (False,$(iphony)) - SRCS1 := $(foreach suff,$(F90SUFFIXES),$(wildcard $(addsuffix /*$(suff), $(SRCPATH)))) -endif -# exclude files from compilation -SRCS := $(foreach f,$(SRCS1),$(if $(findstring $(f),$(abspath $(EXCLUDE_FILES))),,$(f))) -# source files but all with .o -OSRCS := $(foreach suff, $(F90SUFFIXES), $(patsubst %$(suff), %.o, $(filter %$(suff), $(SRCS)))) -# object files -OBJS := $(join $(dir $(OSRCS)), $(addprefix .$(strip $(icompiler)).$(strip $(release))/,$(notdir $(OSRCS)))) -# dependency files -DOBJS := $(OBJS:.o=.d) -# g90 debug files of NAG compiler are in current directory or in source directory -GOBJS := $(addprefix $(CURDIR)/,$(patsubst %.o,%.g90,$(notdir $(OBJS)))) $(patsubst %.o,%.g90,$(OSRCS)) - - -# Same for Fortran77 files -ifeq (False,$(iphony)) - FSRCS1 := $(foreach suff,$(F77SUFFIXES),$(wildcard $(addsuffix /*$(suff), $(SRCPATH)))) -endif -# exclude files from compilation -FSRCS := $(foreach f,$(FSRCS1),$(if $(findstring $(f),$(abspath $(EXCLUDE_FILES))),,$(f))) -# source files but all with .o -FOSRCS := $(foreach suff, $(F77SUFFIXES), $(patsubst %$(suff), %.o, $(filter %$(suff), $(FSRCS)))) -# object files -FOBJS := $(join $(dir $(FOSRCS)), $(addprefix .$(strip $(icompiler)).$(strip $(release))/,$(notdir $(FOSRCS)))) -# dependency files -FDOBJS := $(FOBJS:.o=.d) -# g90 debug files of NAG compiler are in current directory or in source directory -FGOBJS := $(addprefix $(CURDIR)/,$(patsubst %.o,%.g90,$(notdir $(FOBJS)))) $(patsubst %.o,%.g90,$(FOSRCS)) - - -# Same for C files with ending .c -ifeq (False,$(iphony)) - CSRCS1 := $(foreach suff,$(CSUFFIXES),$(wildcard $(addsuffix /*$(suff), $(SRCPATH)))) -endif -# exclude files from compilation -CSRCS := $(foreach f,$(CSRCS1),$(if $(findstring $(f),$(abspath $(EXCLUDE_FILES))),,$(f))) -# source files but all with .o -COSRCS := $(foreach suff, $(CSUFFIXES), $(patsubst %$(suff), %.o, $(filter %$(suff), $(CSRCS)))) -# object files -COBJS := $(join $(dir $(COSRCS)), $(addprefix .$(strip $(icompiler)).$(strip $(release))/,$(notdir $(COSRCS)))) -# dependency files -CDOBJS := $(COBJS:.o=.d) - -# Libraries in source path -ifeq (False,$(iphony)) - LSRCS1 := $(foreach suff,$(LIBSUFFIXES),$(wildcard $(addsuffix /*$(suff), $(SRCPATH)))) -endif -LSRCS := $(foreach f,$(LSRCS1),$(if $(findstring $(f),$(abspath $(EXCLUDE_FILES))),,$(f))) -LOSRCS := $(foreach suff, $(LIBSUFFIXES), $(patsubst %$(suff), %.o, $(filter %$(suff), $(LSRCS)))) -LOBJS := $(addprefix -L,$(dir $(SRCPATH))) $(addprefix -l, $(patsubst lib%, %, $(notdir $(LOSRCS)))) - -# -# --- DEFAULTS --------------------------------------------------- -# - -# These variables will be used to compile -FC := -FCFLAGS := $(EXTRA_FCFLAGS) -F90 := -F90FLAGS := $(EXTRA_F90FLAGS) -CC := -CFLAGS := $(EXTRA_CFLAGS) -CPP := -DEFINES := $(EXTRA_DEFINES) -INCLUDES := $(EXTRA_INCLUDES) $(addprefix -I,$(SRCPATH)) -# and link, and therefore set below -LD := -LDFLAGS := $(EXTRA_LDFLAGS) -LIBS := $(EXTRA_LIBS) $(addprefix -L,$(SRCPATH)) -AR := ar -ARFLAGS := -ru -RANLIB := ranlib - -# -# --- COMPILER / MACHINE SPECIFIC -------------------------------- -# - -# Set path where all the .mod, .o, etc. files will be written, set before include $(MAKEINC) -OBJPATH := $(addsuffix /.$(strip $(icompiler)).$(strip $(release)), $(SRCPATH)) - -# Mac OS X is special, there is (almost) no static linking. -# Mac OS X does not work with -rpath. Set DYLD_LIBRARY_PATH if needed. -iOS := $(shell uname -s) -istatic := $(static) -ifneq (,$(findstring $(iOS),Darwin)) - istatic := dynamic -endif - -# Include the individual configuration files -MAKEINC := $(addsuffix /$(system).$(icompiler), $(abspath $(CONFIGPATH:~%=${HOME}%))) -#$(info "MAKEINC: "$(MAKEINC)) -ifeq ($(strip $(MAKEINC)),) - $(error Error: '$(MAKEINC)' not found.) -endif -include $(MAKEINC) - -# Always use -DCFORTRAN for mixed C and Fortran compilations -DEFINES += -DCFORTRAN - -# Start group for cyclic search in static linking -iLIBS := -ifeq ($(istatic),static) - iLIBS += -Bstatic -Wl,--start-group -else - ifneq (,$(findstring $(iOS),Darwin)) - iLIBS += -Wl,-dynamic - else - iLIBS += -Bdynamic - endif -endif - -# --- COMPILER --------------------------------------------------- -ifneq (,$(findstring $(icompiler),$(gnucompilers))) - ifneq ($(strip $(GFORTRANLIB)),) - GFLIB := $(GFORTRANLIB) - else - ifneq ($(strip $(GFORTRANDIR)),) - GFLIB := $(GFORTRANDIR)/lib - else - ifneq ($(strip $(GNULIB)),) - GFLIB := $(GNULIB) - else - $(error Error: GFORTRAN path not found.) - endif - endif - endif - iLIBS += -L$(GFLIB) -lgfortran - RPATH += -Wl,-rpath,$(GFLIB) -endif - -# --- LINKER --------------------------------------------------- -# Link with the fortran compiler if fortran code -ifneq ($(SRCS)$(FSRCS),) - LD := $(F90) -else - LD := $(CC) -endif - -# --- IMSL --------------------------------------------------- -ifneq (,$(findstring $(imsl),vendor imsl)) - ifeq ($(strip $(IMSLDIR)),) - $(error Error: IMSL path '$(IMSLDIR)' not found.) - endif - IMSLINC ?= $(IMSLDIR)/include - IMSLLIB ?= $(IMSLDIR)/lib - - INCLUDES += -I$(IMSLINC) - ifneq ($(ABSOFT),) - INCLUDES += -p $(IMSLINC) - endif - DEFINES += -DIMSL - - ifeq (,$(findstring $(iOS),Darwin)) - iLIBS += -z muldefs - ifneq ($(istatic),static) - iLIBS += -i_dynamic - endif - endif - - ifneq (,$(findstring $(iOS),Darwin)) - iLIBS += -L$(IMSLLIB) -limsl -limslscalar -limsllapack -limslblas -limsls_err -limslmpistub -limslsuperlu - else - ifeq ($(imsl),imsl) - iLIBS += -L$(IMSLLIB) -limsl -limslscalar -limsllapack_imsl -limslblas_imsl -limsls_err -limslmpistub -limslsuperlu - else - iLIBS += -L$(IMSLLIB) -limsl -limslscalar -limsllapack_vendor -limslblas_vendor -limsls_err -limslmpistub -limslsuperlu -limslhpc_l - endif - endif - RPATH += -Wl,-rpath,$(IMSLLIB) -endif - -# --- OPENMP --------------------------------------------------- -iopenmp := -ifeq ($(openmp),true) - ifneq (,$(findstring $(icompiler),$(gnucompilers))) - iopenmp += -fopenmp - else - ifneq (,$(findstring $(icompiler),$(intelcompilers))) - iopenmp += -qopenmp - else - iopenmp += -openmp - endif - endif - DEFINES += -DOPENMP -endif -F90FLAGS += $(iopenmp) -FCFLAGS += $(iopenmp) -CFLAGS += $(iopenmp) -LDFLAGS += $(iopenmp) -# IMSL needs openmp during linking in any case -ifneq ($(openmp),true) - ifneq (,$(findstring $(imsl),vendor imsl)) - ifneq (,$(findstring $(icompiler),$(gnucompilers))) - LDFLAGS += -fopenmp - else - LDFLAGS += -openmp - endif - endif -endif - -# --- MKL --------------------------------------------------- -ifneq (,$(findstring $(mkl),mkl mkl95)) - ifeq ($(mkl),mkl95) # First mkl95 then mkl for .mod files other then intel - ifeq ($(strip $(MKL95DIR)),) - $(error Error: MKL95 path '$(MKL95DIR)' not found.) - endif - MKL95INC ?= $(MKL95DIR)/include - MKL95LIB ?= $(MKL95DIR)/lib - - INCLUDES += -I$(MKL95INC) - ifneq ($(ABSOFT),) - INCLUDES += -p $(MKL95INC) - endif - DEFINES += -DMKL95 - - iLIBS += -L$(MKL95LIB) -lmkl_blas95_lp64 -lmkl_lapack95_lp64 - RPATH += -Wl,-rpath,$(MKL95LIB) - ifneq ($(ABSOFT),) - F90FLAGS += -p $(MKL95INC) - endif - endif - - ifeq ($(strip $(MKLDIR)),) - $(error Error: MKL path '$(MKLDIR)' not found.) - endif - MKLINC ?= $(MKLDIR)/include - MKLLIB ?= $(MKLDIR)/lib - - INCLUDES += -I$(MKLINC) - ifneq ($(ABSOFT),) - INCLUDES += -p $(MKLINC) - endif - DEFINES += -DMKL - - iLIBS += -L$(MKLLIB) -lmkl_intel_lp64 -lmkl_core #-lpthread - ifneq (,$(findstring $(imsl),vendor imsl)) - iLIBS += -lmkl_intel_thread #-lpthread - else - ifeq ($(openmp),true) - iLIBS += -lmkl_intel_thread #-lpthread - else - iLIBS += -lmkl_sequential #-lpthread - endif - endif - RPATH += -Wl,-rpath,$(MKLLIB) - - ifeq ($(openmp),true) - ifeq (,$(findstring $(icompiler),$(intelcompilers))) - iLIBS += -L$(INTELLIB) -liomp5 - RPATH += -Wl,-rpath,$(INTELLIB) - endif - endif - -endif - -# --- NETCDF --------------------------------------------------- -ifneq (,$(findstring $(netcdf),netcdf3 netcdf4)) - ifeq ($(strip $(NCDIR)),) - $(error Error: NETCDF path '$(NCDIR)' not found.) - endif - NCINC ?= $(strip $(NCDIR))/include - NCLIB ?= $(strip $(NCDIR))/lib - - INCLUDES += -I$(NCINC) - ifneq ($(ABSOFT),) - INCLUDES += -p $(NCINC) - endif - DEFINES += -DNETCDF - - iLIBS += -L$(NCLIB) - RPATH += -Wl,-rpath,$(NCLIB) - ifeq (libnetcdff, $(shell ls $(NCLIB)/libnetcdff.* 2> /dev/null | sed -n '1p' | sed -e 's/.*\(libnetcdff\)/\1/' -e 's/\(libnetcdff\).*/\1/')) - iLIBS += -lnetcdff - endif - iLIBS += -lnetcdf - - ifneq ($(strip $(NCFDIR)),) - NCFINC ?= $(strip $(NCFDIR))/include - NCFLIB ?= $(strip $(NCFDIR))/lib - - INCLUDES += -I$(NCFINC) - ifneq ($(ABSOFT),) - INCLUDES += -p $(NCFINC) - endif - - iLIBS += -L$(NCFLIB) - RPATH += -Wl,-rpath,$(NCFLIB) - ifeq (libnetcdff, $(shell ls $(NCFLIB)/libnetcdff.* 2> /dev/null | sed -n '1p' | sed -e 's/.*\(libnetcdff\)/\1/' -e 's/\(libnetcdff\).*/\1/')) - iLIBS += -lnetcdff - endif - endif - - # other libraries for netcdf4, ignored for netcdf3 - ifeq ($(system),cygwin) - ifeq ($(netcdf),netcdf4) - iLIBS += -L$(HDF5LIB) -lhdf5_hl -lhdf5 - RPATH += -Wl,-rpath,$(HDF5LIB) - ifneq ($(CURLLIB),) - iLIBS += -L$(CURLLIB) -lcurl - RPATH += -Wl,-rpath,$(CURLLIB) - endif - endif - else - ifeq ($(netcdf),netcdf4) - iLIBS += -L$(HDF5LIB) -lhdf5_hl -lhdf5 -L$(SZLIB) -lsz - ifneq ($(ZLIB),) - iLIBS += -L$(ZLIB) -lz - RPATH += -Wl,-rpath,$(ZLIB) - else - iLIBS += -lz - endif - RPATH += -Wl,-rpath,$(HDF5LIB) -Wl,-rpath,$(SZLIB) - ifneq ($(CURLLIB),) - iLIBS += -L$(CURLLIB) -lcurl - RPATH += -Wl,-rpath,$(CURLLIB) - endif - endif - endif -endif - -# --- PROJ -------------------------------------------------- -ifeq ($(proj),true) - ifeq ($(strip $(PROJ4DIR)),) - $(error Error: PROJ4 path '$(PROJ4DIR)' not found.) - endif - PROJ4LIB ?= $(PROJ4DIR)/lib - iLIBS += -L$(PROJ4LIB) -lproj - RPATH += -Wl,-rpath=$(PROJ4LIB) - - ifeq ($(strip $(FPROJDIR)),) - $(error Error: FPROJ path '$(FPROJDIR)' not found.) - endif - FPROJINC ?= $(FPROJDIR)/include - FPROJLIB ?= $(FPROJDIR)/lib - - INCLUDES += -I$(FPROJINC) - ifneq ($(ABSOFT),) - INCLUDES += -p $(FPROJINC) - endif - DEFINES += -DFPROJ - iLIBS += -L$(FPROJLIB) -lfproj4 $(FPROJLIB)/proj4.o - RPATH += -Wl,-rpath,$(FPROJLIB) -endif - -# --- LAPACK --------------------------------------------------- -ifeq ($(lapack),true) - # Mac OS X uses frameworks - ifneq (,$(findstring $(iOS),Darwin)) - iLIBS += -framework Accelerate - else - ifeq ($(strip $(LAPACKDIR)),) - $(error Error: LAPACK path '$(LAPACKDIR)' not found.) - endif - LAPACKLIB ?= $(LAPACKDIR)/lib - iLIBS += -L$(LAPACKLIB) -lblas -llapack - RPATH += -Wl,-rpath,$(LAPACKLIB) - endif - DEFINES += -DLAPACK -endif - -# --- MPI --------------------------------------------------- -MPI_F90FLAGS := -MPI_FCFLAGS := -MPI_CFLAGS := -MPI_LDFLAGS := -ifeq ($(mpi),true) - ifeq ($(strip $(MPIDIR)),) - $(error Error: MPI path '$(MPIDIR)' not found.) - endif - MPIINC ?= $(MPIDIR)/include - MPILIB ?= $(MPIDIR)/lib - MPIBIN ?= $(MPIDIR)/bin - MPI_F90FLAGS += $(shell $(MPIBIN)/mpifort --showme:compile) - MPI_FCFLAGS += $(shell $(MPIBIN)/mpif77 --showme:compile) - MPI_CFLAGS += $(shell $(MPIBIN)/mpicc --showme:compile) - ifeq ($(LD),$(F90)) - MPI_LDFLAGS += $(shell $(MPIBIN)/mpifort --showme:link) - else - MPI_LDFLAGS += $(shell $(MPIBIN)/mpicc --showme:link) - endif - # iLIBS += -L$(MPILIB) # -lproj - RPATH += -Wl,-rpath=$(MPILIB) - INCLUDES += -I$(MPIINC) -I$(MPILIB) # mpi.h in lib and not include <- strange - DEFINES += -DMPI -endif - -# --- DOXYGEN --------------------------------------------------- -ifneq (,$(filter doxygen html latex pdf, $(MAKECMDGOALS))) - ifneq ($(strip $(DOXCONFIG)),) - ISDOX := True - ifneq ($(DOXYGENDIR),) - ifeq ($(strip $(DOXYGENDIR)),) - $(error Error: doxygen not found in $(strip $(DOXYGENDIR)).) - else - DOXYGEN := $(strip $(DOXYGENDIR))/"doxygen" - endif - else - ifneq (, $(shell which doxygen)) - DOXYGEN := doxygen - else - $(error Error: doxygen not found in $PATH.) - endif - endif - ifneq ($(DOTDIR),) - ifeq ($(strip $(DOTDIR)),) - $(error Error: dot not found in $(strip $(DOTDIR)).) - else - DOTPATH := $(strip $(DOTDIR)) - endif - else - ifneq (, $(shell which dot)) - DOTPATH := $(dir $(shell which dot)) - else - DOTPATH := - endif - endif - ifneq ($(TEXDIR),) - ifeq ("$(wildcard $(strip $(TEXDIR))/latex)","") - $(error Error: latex not found in $(strip $(TEXDIR)).) - else - TEXPATH := $(strip $(TEXDIR)) - endif - else - ifneq (, $(shell which latex)) - TEXPATH := $(dir $(shell which latex)) - else - $(error Error: latex not found in $PATH.) - endif - endif - ifneq ($(PERLDIR),) - ifeq ("$(wildcard $(strip $(PERLDIR))/perl)","") - $(error Error: perl not found in $(strip $(PERLDIR)).) - else - PERLPATH := $(strip $(PERLDIR)) - endif - else - ifneq (, $(shell which perl)) - PERLPATH := $(dir $(shell which perl)) - else - $(error Error: perl not found in $PATH.) - endif - endif - else - ISDOX := False - ifneq (,$(filter doxygen latex pdf, $(MAKECMDGOALS))) - $(error Error: no doxygen config file $(DOXCONFIG) found in.) - endif - endif -else - ISDOX := False -endif - -# --- INTEL F2003 REALLOC-LHS --------------------------------------- -ifneq (,$(findstring $(icompiler),$(intelcompilers))) - F90FLAGS1 = $(subst -assume realloc-lhs,,"$(F90FLAGS)") -else - F90FLAGS1 = $(F90FLAGS) -endif - - -# -# --- FINISH SETUP --------------------------------------------------- -# - -ifeq ($(release),debug) - DEFINES += -DDEBUG -endif - -# Mac OS X is special, there is (almost) no static linking; otherwise close static group -ifeq ($(istatic),static) - iLIBS += -Wl,--end-group -endif - -# The NAG compiler links via gcc so that one has to give -Wl twice and double commas for the option -# i.e. instead of -Wl,rpath,/path you need -Wl,-Wl,,rpath,,/path -ifneq (,$(findstring $(icompiler),$(nagcompilers))) - comma := , - iiLIBS := $(subst -Wl,-Wl$(comma)-Wl,$(subst $(comma),$(comma)$(comma),$(iLIBS))) - iRPATH := $(subst -Wl,-Wl$(comma)-Wl,$(subst $(comma),$(comma)$(comma),$(RPATH))) -else - iiLIBS := $(iLIBS) - iRPATH := $(RPATH) -endif -LIBS += $(iiLIBS) -# Only Linux and Solaris can use -rpath in executable -ifeq (,$(findstring $(iOS),Darwin)) - LIBS += $(iRPATH) -endif - -# export LD_LIBRARY_PATH of make.config files -ifneq ($(LDPATH),) - empty:= - space:= $(empty) $(empty) - export LD_LIBRARY_PATH=$(subst $(space),$(empty),$(LDPATH)) -endif - -INCLUDES += $(addprefix -I,$(OBJPATH)) - -# -# --- TARGETS --------------------------------------------------- -# - -#.SUFFIXES: .f90 .F90 .f95 .F95 .f03 .F03 .f08 .F08 .f .F .for .FOR .ftn .FTN .c .C .d .o .a .so .dylib -.SUFFIXES: - -.PHONY: clean cleanclean cleantest checkclean testclean cleancheck html latex pdf doxygen check test info - -all: $(PROGNAME) $(LIBNAME) - -# Link program -$(PROGNAME): $(OBJS) $(FOBJS) $(COBJS) - @echo "Linking program" - $(LD) $(MPI_LDFLAGS) $(LDFLAGS) -o $(PROGNAME) $(OBJS) $(FOBJS) $(COBJS) $(LIBS) $(LOBJS) - -# Link library -$(LIBNAME): $(DOBJS) $(FDOBJS) $(CDOBJS) $(OBJS) $(FOBJS) $(COBJS) - @echo "Linking library" - $(AR) $(ARFLAGS) $(LIBNAME) $(OBJS) $(FOBJS) $(COBJS) - $(RANLIB) $(LIBNAME) - -# Get dependencies -$(DOBJS): - @dirname $@ | xargs mkdir -p 2>/dev/null - @nobj=$$(echo $(DOBJS) | tr ' ' '\n' | grep -n -w -F $@ | sed 's/:.*//') ; \ - src=$$(echo $(SRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - $(CPP) -C -P $(DEFINES) $(INCLUDES) $$src > $$src.pre 2>/dev/null ; \ - $(MAKEDEPSPROG) $$src.pre $$src .$(strip $(icompiler)).$(strip $(release)) $(SRCS) $(FSRCS) ; \ - \rm $$src.pre - -$(FDOBJS): - @dirname $@ | xargs mkdir -p 2>/dev/null - @nobj=$$(echo $(FDOBJS) | tr ' ' '\n' | grep -n -w -F $@ | sed 's/:.*//') ; \ - src=$$(echo $(FSRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - obj=$$(echo $(FOBJS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - dobj=$$(echo $(FOBJS) | tr ' ' '\n' | sed -n $${nobj}p | sed 's|\.o[[:blank:]]*$$|.d|') ; \ - echo "$$obj $$dobj : $$src" > $$dobj - -$(CDOBJS): - @dirname $@ | xargs mkdir -p 2>/dev/null - @nobj=$$(echo $(CDOBJS) | tr ' ' '\n' | grep -n -w -F $@ | sed 's/:.*//') ; \ - src=$$(echo $(CSRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - pobj=$$(dirname $@) ; psrc=$$(dirname $$src) ; \ - $(CC) -E $(DEFINES) $(INCLUDES) -MM $$src | sed "s|.*:|$(patsubst %.d,%.o,$@) $@ :|" > $@ - -# Compile -$(OBJS): -ifneq (,$(findstring $(icompiler),gnu41 gnu42)) - @nobj=$$(echo $(OBJS) | tr ' ' '\n' | grep -n -w -F $@ | sed 's/:.*//') ; \ - src=$$(echo $(SRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - ssrc=$$(basename $$(echo $(SRCS) | tr ' ' '\n' | sed -n $${nobj}p)) ; \ - tmp=$@.$$(echo $${src} | sed 's/.*\.//') ; \ - doex=$$(echo $(INTEL_EXCLUDE) | grep -i "$${ssrc}" -) ; \ - f90flag=$$(if [[ "$${doex}" != "" ]] ; then echo "$(F90FLAGS1)" ; else echo "$(F90FLAGS)" ; fi) ; \ - echo "$(F90) -E $(DEFINES) $(INCLUDES) $${f90flag} $${src} | sed 's/^#[[:blank:]]\{1,\}[[:digit:]]\{1,\}.*$$//' > $${tmp}" ; \ - $(F90) -E $(DEFINES) $(INCLUDES) $${f90flag} $${src} | sed 's/^#[[:blank:]]\{1,\}[[:digit:]]\{1,\}.*$$//' > $${tmp} ; \ - echo "$(F90) $(DEFINES) $(INCLUDES) $(MPI_F90FLAGS) $(F90FLAGS) $(MODFLAG)$(dir $@) -c $${tmp} -o $@" ; \ - $(F90) $(DEFINES) $(INCLUDES) $(MPI_F90FLAGS) $(F90FLAGS) $(MODFLAG)$(dir $@) -c $${tmp} -o $@ ; \ - rm $${tmp} -else - @nobj=$$(echo $(OBJS) | tr ' ' '\n' | grep -n -w -F $@ | sed 's/:.*//') ; \ - src=$$(echo $(SRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - ssrc=$$(basename $$(echo $(SRCS) | tr ' ' '\n' | sed -n $${nobj}p)) ; \ - doex=$$(echo $(INTEL_EXCLUDE) | grep -i "$${ssrc}" -) ; \ - f90flag=$$(if [[ "$${doex}" != "" ]] ; then echo "$(F90FLAGS1)" ; else echo "$(F90FLAGS)" ; fi) ; \ - echo $(F90) $(DEFINES) $(INCLUDES) $(MPI_F90FLAGS) $${f90flag} $(MODFLAG)$(dir $@) -c $${src} -o $@ ; \ - $(F90) $(DEFINES) $(INCLUDES) $(MPI_F90FLAGS) $${f90flag} $(MODFLAG)$(dir $@) -c $${src} -o $@ -endif - -$(FOBJS): -ifneq (,$(findstring $(icompiler),gnu41 gnu42)) - @nobj=$$(echo $(FOBJS) | tr ' ' '\n' | grep -n -w -F $@ | sed 's/:.*//') ; \ - src=$$(echo $(FSRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - tmp=$@.$$(echo $${src} | sed 's/.*\.//') ; \ - echo "$(FC) -E $(DEFINES) $(INCLUDES) $(FCFLAGS) $${src} | sed 's/^#[[:blank:]]\{1,\}[[:digit:]]\{1,\}.*$$//' > $${tmp}" ; \ - $(FC) -E $(DEFINES) $(INCLUDES) $(FCFLAGS) $${src} | sed 's/^#[[:blank:]]\{1,\}[[:digit:]]\{1,\}.*$$//' > $${tmp} ; \ - echo "$(FC) $(DEFINES) $(INCLUDES) $(MPI_FCFLAGS) $(FCFLAGS) -c $${tmp} -o $@" ; \ - $(FC) $(DEFINES) $(INCLUDES) $(MPI_FCFLAGS) $(FCFLAGS) -c $${tmp} -o $@ ; \ - rm $${tmp} -else - @nobj=$$(echo $(FOBJS) | tr ' ' '\n' | grep -n -w -F $@ | sed 's/:.*//') ; \ - src=$$(echo $(FSRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - echo $(FC) $(DEFINES) $(INCLUDES) $(MPI_FCFLAGS) $(FCFLAGS) -c $$src -o $@ ; \ - $(FC) $(DEFINES) $(INCLUDES) $(MPI_FCFLAGS) $(FCFLAGS) -c $$src -o $@ -endif - -$(COBJS): - @nobj=$$(echo $(COBJS) | tr ' ' '\n' | grep -n -w -F $@ | sed 's/:.*//') ; \ - src=$$(echo $(CSRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - echo $(CC) $(DEFINES) $(INCLUDES) $(MPI_CFLAGS) $(CFLAGS) -c $${src} -o $@ ; \ - $(CC) $(DEFINES) $(INCLUDES) $(MPI_CFLAGS) $(CFLAGS) -c $${src} -o $@ - -# Helper Targets -clean: - rm -f $(DOBJS) $(FDOBJS) $(CDOBJS) $(OBJS) $(FOBJS) $(COBJS) $(addsuffix /*.mod, $(OBJPATH)) $(addsuffix /*.pre, $(SRCPATH)) -ifeq (False,$(islib)) - rm -f "$(PROGNAME)" -endif - rm -f $(GOBJS) $(FGOBJS) - rm -f *make_check_test_file - -cleanclean: clean - rm -rf $(addsuffix /.*.r*, $(SRCPATH)) $(addsuffix /.*.d*, $(SRCPATH)) - rm -rf "$(PROGNAME)".dSYM $(addsuffix /html, $(SRCPATH)) - @if [ -f "$(DOXCONFIG)" ] ; then rm -rf $(PROGPATH)/latex ; fi - @if [ -f "$(DOXCONFIG)" ] ; then rm -rf $(PROGPATH)/html ; fi -ifeq (True,$(islib)) - rm -f "$(LIBNAME)" -endif - -cleancheck: - for i in $(shell ls -d $(CHECKPATH)/test* $(CHECKPATH)/check*) ; do \ - $(MAKE) SRCPATH=$$i cleanclean ; \ - done - -cleantest: cleancheck - -checkclean: cleancheck - -testclean: cleancheck - -check: -ifeq (True,$(islib)) - $(error Error: check and test must be done with PROGNAME not LIBNAME.) -endif - for i in $(shell ls -d $(CHECKPATH)/test* $(CHECKPATH)/check*) ; do \ - rm -f "$(PROGNAME)" ; \ - j=$${i/minpack/maxpack} ; \ - libextra= ; \ - if [ $$i != $$j ] ; then \ - $(MAKE) -s MAKEDPATH=$(MAKEDPATH) SRCPATH="$$i"/../../minpack PROGPATH=$(PROGPATH) \ - CONFIGPATH=$(CONFIGPATH) PROGNAME= LIBNAME=libminpack.a system=$(system) \ - release=$(release) netcdf=$(netcdf) static=$(static) proj=$(proj) \ - imsl=$(imsl) mkl=$(mkl) lapack=$(lapack) compiler=$(compiler) \ - openmp=$(openmp) > /dev/null ; \ - libextra="-L. -lminpack" ; \ - fi ; \ - $(MAKE) -s MAKEDPATH=$(MAKEDPATH) SRCPATH=$$i PROGPATH=$(PROGPATH) \ - CONFIGPATH=$(CONFIGPATH) PROGNAME=$(PROGNAME) system=$(system) \ - release=$(release) netcdf=$(netcdf) static=$(static) proj=$(proj) \ - imsl=$(imsl) mkl=$(mkl) lapack=$(lapack) compiler=$(compiler) \ - openmp=$(openmp) NOMACWARN=true EXTRA_LIBS="$$libextra" > /dev/null \ - && { $(PROGNAME) 2>&1 | grep -E '(o\.k\.|failed)' ;} ; status=$$? ; \ - if [ $$status != 0 ] ; then echo "$$i failed!" ; fi ; \ - $(MAKE) -s SRCPATH=$$i cleanclean ; \ - if [ $$i != $$j ] ; then \ - $(MAKE) -s SRCPATH="$$i"/../../minpack PROGNAME= LIBNAME=libminpack.a cleanclean ; \ - fi ; \ - done - -test: check - -depend: dependencies - -dependencies: - @for i in $(DOBJS) ; do \ - nobj=$$(echo $(DOBJS) | tr ' ' '\n' | grep -n -w -F $${i} | sed 's/:.*//') ; \ - src=$$(echo $(SRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - obj=$$(echo $(OBJS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - if [ $${src} -nt $${obj} ] ; then rm $${i} ; fi ; \ - done - @for i in $(FDOBJS) ; do \ - nobj=$$(echo $(FDOBJS) | tr ' ' '\n' | grep -n -w -F $${i} | sed 's/:.*//') ; \ - src=$$(echo $(FSRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - obj=$$(echo $(FOBJS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - if [ $${src} -nt $${obj} ] ; then rm $${i} ; fi ; \ - done - @for i in $(CDOBJS) ; do \ - nobj=$$(echo $(CDOBJS) | tr ' ' '\n' | grep -n -w -F $${i} | sed 's/:.*//') ; \ - src=$$(echo $(CSRCS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - obj=$$(echo $(COBJS) | tr ' ' '\n' | sed -n $${nobj}p) ; \ - if [ $${src} -nt $${obj} ] ; then rm $${i} ; fi ; \ - done - @rm -f $(addsuffix /$(MAKEDSCRIPT).dict, $(OBJPATH)) - -doxygen: - @cat $(DOXCONFIG) | \ - sed -e "/^PERL_PATH/s|=.*|=$(PERLPATH)|" | \ - sed -e "/^DOT_PATH/s|=.*|=$(DOTPATH)|" | env PATH=${PATH}:$(TEXPATH) $(DOXYGEN) - - -html: - @if [ $(ISDOX) == True ] ; then \ - cat "$(DOXCONFIG)" | \ - sed -e "/^PERL_PATH/s|=.*|=$(PERLPATH)|" | \ - sed -e "/^DOT_PATH/s|=.*|=$(DOTPATH)|" | env PATH=${PATH}:$(TEXPATH) $(DOXYGEN) - ; \ - else \ - for i in $(SRCPATH) ; do \ - $(CONFIGPATH)/f2html -f $(CONFIGPATH)/f2html.fgenrc -d $$i/html $$i ; \ - done ; \ - fi - -latex: pdf - -pdf: doxygen - @cd latex ; env PATH=${PATH}:$(TEXPATH) make pdf - -info: - @echo "CHS Makefile" - @echo "" - @echo "Config" - @echo "system = $(system)" - @echo "compiler = $(compiler)" - @echo "release = $(release)" - @echo "netcdf = $(netcdf)" - @echo "lapack = $(lapack)" - @echo "mkl = $(mkl)" - @echo "proj = $(proj)" - @echo "imsl = $(imsl)" - @echo "openmp = $(openmp)" - @echo "static = $(static)" - @echo "" - @echo "Files/Pathes" - @echo "SRCPATH = $(SRCPATH)" - @echo "PROGPATH = $(PROGPATH)" - @echo "CONFIGPATH = $(CONFIGPATH)" - @echo "MAKEDPATH = $(MAKEDPATH)" - @echo "CHECKPATH = $(CHECKPATH)" - @echo "PROGNAME = $(basename $(PROGNAME))" - @echo "LIBNAME = $(basename $(LIBNAME))" - @echo "FILES = $(SRCS) $(FORSRCS) $(CSRCS) $(LASRCS)" - @echo "" - @echo "Programs/Flags" - @echo "FC = $(FC)" - @echo "FCFLAGS = $(FCFLAGS)" - @echo "F90 = $(F90)" - @echo "F90FLAGS = $(F90FLAGS)" - @echo "CC = $(CC)" - @echo "CFLAGS = $(CFLAGS)" - @echo "DEFINES = $(DEFINES)" - @echo "INCLUDES = $(INCLUDES)" - @echo "LD = $(LD)" - @echo "LDFLAGS = $(LDFLAGS)" - @echo "LIBS = $(LIBS)" - @echo "AR = $(AR)" - @echo "ARFLAGS = $(ARFLAGS)" - @echo "RANLIB = $(RANLIB)" - @echo "" - @echo "Configured compilers on $(system): $(compilers)" -ifneq ($(strip $(ALIASINC)),) - @echo "" - @echo "Compiler aliases for $(system)" - @sed -n '/ifneq (,$$(findstring $$(compiler)/,/endif/p' $(ALIASINC) | \ - sed -e '/endif/d' -e 's/icompiler ://' | \ - sed -e 's/ifneq (,$$(findstring $$(compiler),//' -e 's/))//' | \ - paste - - | tr -d '\t' | tr -s ' ' -endif - @echo "" - @echo "Targets" - @echo "all (default) Compile program or library" - @echo "check Run all checks in $(CHECKPATH)/test* and $(CHECKPATH)/check* directories" - @echo "checkclean alias for cleancheck" - @echo "clean Clean compilation of current compiler and release" - @echo "cleancheck Cleanclean all test directories $(CHECKPATH)/test* and $(CHECKPATH)/check*" - @echo "cleanclean Clean compilations of all compilers and releases" - @echo "cleantest alias for cleancheck" - @echo "depend alias for dependencies" - @echo "dependencies Redo dependencies" - @echo "doxygen Run doxygen html with $(DOXPATH)/doxygen.config" - @echo "html Run either doxygen html with $(DOXPATH)/doxygen.config or f2html of Jean-Marc Beroud" - @echo "info Prints info about current settings and possibilities" - @echo "latex alias for pdf" - @echo "pdf Run doxygen PDF with $(DOXPATH)/doxygen.config" - @echo "test alias for check" - @echo "testclean alias for cleancheck" - @echo "" - @echo "All possibilities" - @echo "system $(shell ls -1 $(CONFIGPATH) | sed -e '/"$(MAKEDSCRIPT)"/d' -e '/f2html/d' | cut -d '.' -f 1 | sort | uniq)" - @echo "compiler $(shell ls -1 $(CONFIGPATH) | sed -e '/"$(MAKEDSCRIPT)"/d' -e '/f2html/d' -e '/alias/d' | cut -d '.' -f 2 | sort | uniq)" - @echo "release debug release" - @echo "netcdf netcdf3 netcdf4 [anything else]" - @echo "lapack true [anything else]" - @echo "mkl mkl mkl95 [anything else]" - @echo "proj true [anything else]" - @echo "imsl vendor imsl [anything else]" - @echo "openmp true [anything else]" - @echo "static static shared (=dynamic)" - -# All dependencies created by perl script make.d.sh -ifeq (False,$(iphonyall)) - $(info Checking dependencies ...) - -include $(DOBJS) $(FDOBJS) $(CDOBJS) -endif diff --git a/bash/launch_mRM.sh b/bash/launch_mRM.sh deleted file mode 100755 index aeac68ef2a2034b862734ec64a612b4a839d9d9d..0000000000000000000000000000000000000000 --- a/bash/launch_mRM.sh +++ /dev/null @@ -1,625 +0,0 @@ -#!/bin/bash -# -# Evaluate Regionalization for MultiScale Routing Model (mRM) - -# author: Stephan Thober -# created: 23.02.2016 -# modified: Jun 2016, ST - added German and European basins - -# set -x - -# --------------------------------------------------------------------------------------------------------------- -# Start -# -set -e -prog=$0 -pprog=$(basename ${prog}) -dprog=$(dirname ${prog}) -isdir=${PWD} -pid=$$ - -function usage () { - printf "${pprog} [-h] [-a False] [-b basins] [-c do_opti] [-d base_dir] [-e False] [-i in_dir] [-m mRM_exec] [-n namelist_dir] [-p python_dir] [-r res] [-t target_name]\n" - printf "Run mRM with specific regionalization for different resolutions.\n" - printf "The following settings can be given\n" - printf "\n" - printf "Options\n" - printf " -h Prints this help screen.\n" - printf " -a perform ALL mRM runs, only performed when 'True' is given\n" - printf " (Default: True)\n" - printf " -b Do basin dependent namelists (Default: False).\n" - printf " The basin-dependent namelists have a fixed naming convention\n" - printf " and are located in the folder:\n" - printf " (/home/thober/projects/2016/routing/paper/data/mRM_default_params/)\n" - printf " -c Perform basin calibration, otherwise forward run.\n" - printf " (Default: True).\n" - printf " -d base directory where outputs are written\n" - printf " (Default: /work/thober/mRM)\n" - printf " -e optimize ALL European basins, only performed when 'True' is given\n" - printf " (Default: True)\n" - printf " -i input directory for mRM_exec [-m] and file_nml [-n]\n" - printf " filenames are assumed to be mhm, mhm_parameter.nml and run_times.sh, respectively\n" - printf " (Default: '')\n" - printf " -m specifies the mRM to be used.\n" - printf " This file must be located in the base directory.\n" - printf " (Default: mrm_r2254)\n" - printf " -n specify the mhm_parameter.nml file\n" - printf " (Default: mhm_parameter.nml)\n" - printf " -p directory where python scripts are located\n" - printf " for calculation of bar plot and correlation plot\n" - printf " (Default: /home/thober/projects/2016/routing/paper/figures/).\n" - printf " -r resolutions to evaluate\n" - printf " (Default: 0.5 0.25 0.125)\n" - printf " -t Target directory that will be create as subdirectory\n" - printf " in base_dir (Default: '')\n" - printf " -z run time file containing hash values for run times\n" - printf " See default table in this script for format.\n" - printf " (Default: '')\n" - printf "\n" - printf "Example\n" - printf " ${pprog} -b /work/thober/mRM -m mrm_for_test -n /work/thober/mRM/tennessee_savannah -p /usr/lib/local/\n" -} - -# ----------------------------------------------------------------------------- -# FUNCTION DEFINITIONS -------------------------------------------------------- -# ----------------------------------------------------------------------------- -function create_work () { - if [[ -d ${work} ]] ; then rm -r ${work}; fi - mkdir -p ${work} - # (1.4) copy namelists ---------------------------------------------------- - cp ${file_nml} ${work}/mhm_parameter.nml - cp mhm_template.nml ${work}/mhm.nml - cp mrm_outputs.nml ${work}/mrm_outputs.nml - cp submit_mRM.sh ${work}/submit_mRM.sh - cp run_python_scripts.sh ${work}/run_python_scripts.sh - # model - cp ${mRM_exec} ${work}/mrm - chmod +x ${work}/mrm -} - -# colum where gauge id is located is input to this function -function change_namelists () { - gauge_col=${1} - is_EU=${2} - is_ger=${3} - datainput=${database}${basin_name} - datatotalrun=${datainput}/total_runoff/ - datalatlon=${datainput}/latlon/latlon.nc - # gauging station id - ngauge=1 - gaugeid=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f ${gauge_col} -d " ") - # get periods (separate evaluation for german and europe basins) - if [[ ${is_ger} == 'True' ]]; then - # get dates - dStart=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f 13 -d " ") - yStart=$(echo ${dStart} | cut -d '-' -f 1) - mStart=$(echo ${dStart} | cut -d '-' -f 2) - dStart=$(echo ${dStart} | cut -d '-' -f 3) - dEnd=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f 14 -d " ") - yEnd=$(echo ${dEnd} | cut -d '-' -f 1) - mEnd=$(echo ${dEnd} | cut -d '-' -f 2) - dEnd=$(echo ${dEnd} | cut -d '-' -f 3) - # check whether there are six years of warmingDays avaialable - set +e - (( yDiff = ${yEnd} - ${yStart} )) - if [[ ${yDiff} -gt 15 ]]; then - (( yStart = ${yEnd} - 10 )) - fi - # set warming days to zero - warmingDays=0 - set -e - else - yStart=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f $(( ${gauge_col} + 1 )) -d " ") - mStart=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f $(( ${gauge_col} + 2 )) -d " ") - dStart=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f $(( ${gauge_col} + 3 )) -d " ") - yEnd=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f $(( ${gauge_col} + 4 )) -d " ") - mEnd=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f $(( ${gauge_col} + 5 )) -d " ") - dEnd=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f $(( ${gauge_col} + 6 )) -d " ") - meteo_yStart=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f 2 -d " ") - # check whether there are six years of warmingDays avaialable - set +e - (( yDiff = ${yStart} - ${meteo_yStart} )) - if [[ ${yDiff} -gt 4 ]]; then - warmingDays=1826 - else - (( warmingDays = 365 * ${yDiff} )) - fi - set -e - fi - # German basins have more complicated path structure - if [[ ${is_ger} == 'True' ]]; then - datainput=${database}sub_${gaugeid} - datatotalrun=/data/stohyd/mHM_project/germany/basin/small/sub_${gaugeid}/thober/total_runoff/ - datalatlon=${datainput}/latlon/latlon_v5.5.nc - fi - # apply changes to mhm.nml - sed -e "s|STcoordSysST|${coordSys}|" \ - -e "s|STresHydroST|${resHydro}|" -e "s|STresRoutST|${rr}|" \ - -e "s|STdataInputST|${datainput}|" -e "s|SToutST|${work}|" \ - -e "s|STlatlonST|${datalatlon}|" -e "s|STtotalRunST|${datatotalrun}|" \ - -e "s|STfileLCST|${fileLC}|" -e "s|STgaugeIdST|${gaugeid}|" \ - -e "s|STyStartST|${yStart}|" -e "s|STmStartST|${mStart}|" \ - -e "s|STdStartST|${mStart}|" -e "s|STyEndST|${yEnd}|" \ - -e "s|STmEndST|${mEnd}|" -e "s|STdEndST|${dEnd}|" \ - -e "s|SToptiST|${do_opti}|" \ - mhm.nml > mhm.${pid}.nml - mv mhm.${pid}.nml mhm.nml - # -e "s|STwarmingDaysST|${warmingDays}|" \ - # add _nc for EU basins - if [[ ${is_EU} == 'True' ]]; then - sed -e "s|${datainput}/morph/|${datainput}/morph_v2/|" \ - mhm.nml > mhm.${pid}.nml - mv mhm.${pid}.nml mhm.nml - fi - # - if [[ ${do_opti} == 'True' ]]; then - # (1.7) create subdirectories for optimization -------------------- - for ii in $(seq ${Nrealization}); do - # create directory - run_dir='run_'${ii}/ - mkdir ${run_dir} - # symlink files - ln -s ${work}mhm_parameter.nml ${run_dir} - cp ${work}mhm.nml ${run_dir} - ln -s ${work}mrm_outputs.nml ${run_dir} - ln -s ${work}mrm ${run_dir} - # change run directory - sed -e "s|\(dir_Out.*${work}\)\(.*\)|\1${run_dir}\2|" \ - ${run_dir}mhm.nml > mhm.${pid}.nml - mv mhm.${pid}.nml ${run_dir}mhm.nml - done - fi - # (1.8) submit script --------------------------------------------- - sed -e "s|STjobnameST|${basin_name%_*}_${rr}|" submit_mRM.sh > sub.${pid}.sh - mv sub.${pid}.sh submit_mRM.sh -} - -deg_to_m() { - case $1 in - '0.5') echo '16000';; - '0.25') echo '8000';; - '0.125') echo '4000';; - *) echo $1;; - esac -} - -deg_to_m_EU() { - case $1 in - '0.5') echo '48000';; - '0.25') echo '24000';; - '0.125') echo '12000';; - *) echo $1;; - esac -} -# ----------------------------------------------------------------------------- -# FUNCTION DEFINITIONS -------------------------------------------------------- -# ----------------------------------------------------------------------------- - -# ----------------------------------------------------------------------------- -# switches for basins -do_ohio='False' -do_ger='True' -do_EU='False' -# switches for optimization -do_opti='True' -do_basin_nml='False' -do_mrm='True' # set to True if mRM should be run -# default setings -basin_nml_dir='/home/thober/projects/2016/routing/paper/data/mRM_default_params/' -base_dir='/work/thober/mRM/' -mRM_exec='/work/thober/mRM/mrm_r2254' -target_name='' -ptn_dir='/home/thober/projects/2016/routing/paper/figures/' -file_nml='mhm_parameter.nml' # parameter file -in_dir='' -while getopts ":h:a:b:c:d:e:i:m:n:p:r:t:" Option ; do - case ${Option} in - h) usage 1>&2; exit 0;; - a) do_mrm="${OPTARG}";; - b) do_basin_nml="${OPTARG}";; - c) do_opti="${OPTARG}";; - d) base_dir="${OPTARG}";; - e) do_eu="${OPTARG}";; - i) in_dir="${OPTARG}";; - m) mRM_exec="${OPTARG}";; - n) file_nml="${OPTARG}";; - r) res="${OPTARG}";; - t) target_name="${OPTARG}";; - p) ptn_dir="${OPTARG}";; - *) printf "Error ${pprog}: unimplemented option.\n\n"; usage 1>&2; exit 1;; - esac -done -shift $((${OPTIND} - 1)) - -# check whether in_dir has been given and reset variables -if [[ ${in_dir} != '' ]]; then - mRM_exec=${in_dir}/mhm - file_nml=${in_dir}/mhm_parameter.nml -fi - -# determine opti_function to use -opti=$(grep 'opti_function =' ${file_nml%/*}/mhm.nml | cut -d '=' -f 2) -# set Number of realizations -Nrealization=10 - -# print startup -echo "*******************************" -echo "*** start up initialization ***" -echo "base_dir = "${base_dir} -echo "mRM_exec = "${mRM_exec} -echo "file_nml = "${file_nml} -echo "res = "${res} -echo "target_name = "${target_name} -echo "ptn_dir = "${ptn_dir} -echo "opti_function = "${opti} -echo "*** start up initialization ***" -echo "*******************************" - -# consistency checks ========================================================= -if [[ ${target_name} == '' ]]; then printf "Error ${pprog}: target_name cannot be empty.\n\n" ; exit 1 ; fi -if [[ ! -f ${mRM_exec} ]] ; then printf "Error ${pprog}: mRM_exec not found.\n\n" ; exit 1 ; fi -if [[ ! -f ${file_nml} ]] ; then printf "Error ${pprog}: ${file_nml} not found.\n\n" ; exit 1 ; fi -if [[ ${mRM_exec:0:1} != '/' ]]; then printf "Error ${pprog}: ${mRM_exec} is no absolute path.\n\n"; exit 1; fi -if [[ ${file_nml:0:1} != '/' ]]; then printf "Error ${pprog}: ${file_nml} is no absolute path.\n\n"; exit 1; fi -if [[ ! -f ${ptn_dir}'/plot_param_box.py' ]];then printf "Error ${pprog}: plot_param_box.py not found in ptn_dir.\n\n" ; exit 1 ; fi -if [[ ! -f ${ptn_dir}'/plot_param_corr.py' ]];then printf "Error ${pprog}: plot_param_corr.py not found in ptn_dir.\n\n" ; exit 1 ; fi -if [[ ! -f ${ptn_dir}'/ParamOpti_development.py' ]];then printf "Error ${pprog}: ParamOpti_development.py not found in ptn_dir.\n\n" ; exit 1 ; fi -if [[ ! -f ${ptn_dir}'/plot_Q_mRM.py' ]];then printf "Error ${pprog}: plot_Q_mRM.py not found in ptn_dir.\n\n" ; exit 1 ; fi - - -# create dictionary for translating resolution for neckar rockenau - -# ============================================================================ - -# set target_dir -target_dir=${base_dir}'/'${target_name} -if [[ ! -d ${target_dir} ]]; then mkdir -p ${target_dir}; fi - -# create configfile -config_file=${target_dir}'/Config.out' -cat > ${config_file} < /dev/null - # append res_jid to basin_jids - job_ids=${job_ids}${job_jid%.*}, - # (1.10) change back into original directory ---------------------- - cd ${isdir} - done - echo '' - done -fi - -# ============================================================================ -# (2) PROCESS GERMAN BASINS -# ============================================================================ -if [[ ${do_ger} == 'True' ]]; then - # (0.) settings for German basins ---------------------------------------- - res='16000 8000' # '16000 8000 4000 2000 1000' - # flag does not exist in german LUT, all basins are considered - basin_file='/home/thober/projects/2016/routing/launch_scripts/LUT_german_basins_Matze.txt' - database='/data/stohyd/data/processed/Germany/basins/' - resHydro='4000' - fileLC='lc_1990.asc' - coordSys=0 - ncol=17 # number of columns in lut table - # (1.1) determine number of basins ---------------------------------------- - job_ids='' # initialize job ids - nbasin=$(($(cat ${basin_file} | wc -l)-1)) - # resolution loop - for rr in ${res}; do - rr=$(deg_to_m ${rr}) - echo 'resolution: '${rr} - # basin loop - for ((i=1; i<=${nbasin}; i++)) ; do - # (1.2) get the basin name and verify whether it should be processed -- - basin_name=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f 18,19 -d " " | tr ' ' '_') - basin_id=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f 1 -d " ") - echo -n "${basin_name} " - # (1.3) create working directory -------------------------------------- - work=${target_dir}/sub_${basin_id}/res_${rr}/ - if [[ ${do_basin_nml} == 'True' ]]; then - file_nml=${basin_nml_dir}/sub_${basin_id}_res_1000_run_5_FinalParam.nml - fi - create_work - # (1.5) change dir into the work directory --------------------------- - cd ${work} - # (1.6) change mhm namelist ------------------------------------------ - change_namelists 1 False True - # (1.9) submit routing model -------------------------------------- - basin_list="${basin_list} ${basin_name}" - if [[ ${do_opti} == 'True' ]]; then - job_id=$(qsub -q ideve_120 -terse -t 1-${Nrealization} submit_mRM.sh) - else - job_id=$(qsub -q ideve_120 -terse submit_mRM.sh) - fi - # # sleep for 5s such that qstat gets all jobs - # printf " waiting for 2s such that job is registered by qstat\n" - # sleep 2 - # # submit python jobs for this resolution - # qsub -hold_jid ${job_id%.*} run_python_scripts.sh -d ${target_dir}/ -b ${basin_name} -e ${Nrealization} -r ${rr} -p ${ptn_dir} -n ${file_nml} > /dev/null - # append res_jid to basin_jids - job_ids=${job_ids}${job_jid%.*}, - # (1.10) change back into original directory ---------------------- - cd ${isdir} - done - echo '' - done -fi - -# ============================================================================ -# (3) PROCESS EUROPEAN BASINS -# ============================================================================ -if [[ ${do_EU} == 'True' ]]; then - # (0.) settings for European basins -------------------------------------- - res='48000 24000 12000 6000 3000' - basin_file='/home/thober/projects/2016/routing/launch_scripts/europe_basin_lut_JM_cross-valid.txt' - database='/data/stohyd/data/processed/europe/sub_basins/' - resHydro='24000' - fileLC='lc_1990.asc' - coordSys=0 - ncol=37 # number of columns in lut table - # (1.1) determine number of basins ---------------------------------------- - job_ids='' # initialize job ids - nbasin=$(($(cat ${basin_file} | wc -l)-1)) - # resolution loop - for rr in ${res}; do - rr=$(deg_to_m_EU ${rr}) - echo 'resolution: '${rr} - # basin loop - for ((i=1; i<=${nbasin}; i++)) ; do - # (1.2) get the basin name and verify whether it should be processed -- - basin_name=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f 8 -d " ") - echo -n "${basin_name} " - # last colunm (FLAG) in lookup table is 0: exclude basin or 1: include basin - flag=$(cat ${basin_file} | sed "1d" | sed -n "${i}p" | cut -f ${ncol} -d " ") - if [[ ${flag} -eq 0 ]] ; then - echo "skipped." - continue - fi - # (1.3) create working directory -------------------------------------- - work=${target_dir}/${basin_name}/res_${rr}/ - if [[ ${do_basin_nml} == 'True' ]]; then - file_nml=${basin_nml_dir}/${basin_name}_res_48000_run_5_FinalParam.nml - fi - create_work - # (1.5) change dir into the work directory --------------------------- - cd ${work} - # (1.6) change mhm namelist ------------------------------------------ - change_namelists 12 True False - # (1.9) submit routing model -------------------------------------- - basin_list="${basin_list} ${basin_name}" - if [[ ${do_opti} == 'True' ]]; then - job_id=$(qsub -q ideve_120 -terse -t 1-${Nrealization} submit_mRM.sh) - else - job_id=$(qsub -q ideve_120 -terse submit_mRM.sh) - # chmod +x submit_mRM.sh - # ./submit_mRM.sh - # time ./mrm > mrm.out - fi - # # sleep for 5s such that qstat gets all jobs - # printf " waiting for 2s such that job is registered by qstat\n" - # sleep 2 - # # submit python jobs for this resolution - # qsub -hold_jid ${job_id%.*} run_python_scripts.sh -d ${target_dir}/ -b ${basin_name} -e ${Nrealization} -r ${rr} -p ${ptn_dir} -n ${file_nml} > /dev/null - # append res_jid to basin_jids - job_ids=${job_ids}${job_jid%.*}, - # (1.10) change back into original directory ---------------------- - cd ${isdir} - done - echo '' - done -fi -printf "Done!\n" -exit 0 - -# ============================================================================ -# WHAT FOLLOWS, IS OLD CODE ================================================== -# ============================================================================ - -# # ============================================================================ -# # SETUP HASH TABLE FOR RUN TIMES -# hash_index() { -# case $1 in -# 'ohio_metropolis') -# case $2 in -# '0.5') return 1;; -# '0.25') return 2;; -# '0.125') return 3;; -# esac;; -# 'wabash_carmel') -# case $2 in -# '0.5') return 4;; -# '0.25') return 5;; -# '0.125') return 6;; -# esac;; -# 'ohio_louisville') -# case $2 in -# '0.5') return 7;; -# '0.25') return 8;; -# '0.125') return 9;; -# esac;; -# 'tennessee_savannah') -# case $2 in -# '0.5') return 10;; -# '0.25') return 11;; -# '0.125') return 12;; -# esac;; -# 'neckar_rockenau') -# case $2 in -# '16000') return 13;; -# '8000') return 14;; -# '4000') return 15;; -# esac;; -# esac -# } - -# if [[ ! -f ${rt_file} ]]; then -# printf "Warning ${pprog}: ${rt_file} not found, using default table.\n" -# run_times=("", # sort of like returning null/nil for a non existent key -# "24:00:00" # ohio_metropolis 0.5 -# "48:00:00" # ohio_metropolis 0.25 -# "96:00:00" # ohio_metropolis 0.125 -# "01:30:00" # wabash_carmel 0.5 -# "03:00:00" # wabash_carmel 0.25 -# "06:00:00" # wabash_carmel 0.125 -# "02:00:00" # ohio_louisville 0.5 -# "04:00:00" # ohio_louisville 0.25 -# "08:00:00" # ohio_louisville 0.125 -# "01:00:00" # tennessee_savannah 0.5 -# "02:00:00" # tennessee_savannah 0.25 -# "04:00:00" # tennessee_savannah 0.125 -# "01:00:00" # neckar_rockenau 16000 -# "02:00:00" # neckar_rockenau 8000 -# "04:00:00" # neckar_rockenau 4000 -# ); -# else -# # include run times -# source ${rt_file} -# fi -# # initialize job ids -# all_ids="" -# # loop over basins -# for bb in ${basins};do -# printf " processing basin: "${bb}"\n" -# # set nml_file -# nml_file=${base_dir}'/'${bb}'/namelists/mhm.nml' -# # consistency checks -# if [[ ! -f ${nml_file} ]];then printf "Error ${pprog}: mhm.nml not found in nml_dir.\n\n" ; exit 1 ; fi -# # set basin_ids -# basin_ids="" -# # loop over resolutions -# for rr in ${res}; do -# # translate resolution if neckar_rockenau is evaluated -# if [[ ${bb} == 'neckar_rockenau' ]]; then -# rr=$(deg_to_m ${rr}) -# rr_name=${rr:0:2} -# else -# rr_name=${rr:2:3} -# fi -# # -# printf " processing resolution: "${rr}"\n" -# if [[ ${do_mrm} == 'True' ]]; then -# # set target_dir -# run_dir=${target_dir}'/'${bb}'/res_'${rr}'/run_' -# # create target dirs -# for ii in $(seq ${Nrealization}); do -# tmp_dir=${run_dir}${ii} -# if [[ ${tmp_dir} == '' ]]; then printf "Error ${pprog}: ${BASE_DIR}${ii} is empty.\n\n" ; exit 1 ; fi -# if [[ ${tmp_dir} == '/' ]]; then printf "Error ${pprog}: ${BASE_DIR}${ii} is /.\n\n" ; exit 1 ; fi -# if [[ ${tmp_dir/*\/usr\/*/TRUE} == 'TRUE' ]]; then printf "Error ${pprog}: ${BASE_DIR}${ii} contains '/usr/'.\n\n" ; exit 1 ; fi -# if [[ -d ${tmp_dir} ]]; then rm -r ${tmp_dir}; fi -# mkdir -p ${tmp_dir} -# # copy files there -# ln -s ${file_nml} ${tmp_dir}/mhm_parameter.nml -# cp mrm_outputs.nml ${tmp_dir} -# # replace Routing Resolution in mhm.nml -# sed -e "s/resolution_Routing(1) = .*/resolution_Routing(1) = ${rr}/g" \ -# -e "s/opti_function = .*/opti_function = ${opti}/g" ${nml_file} > ${tmp_dir}/mhm.nml -# # copy executable -# ln -s ${mRM_exec} ${tmp_dir}/mrm -# done - -# # get run time -# rt=$(hash_index ${bb} ${rr} || echo ${run_times[$?]}) -# # create name of StdOut File -# gauge=${bb#*_} -# # substitute run time and basin name in submit_mRM.sh -# sed -i -e "s/#$ -l h_rt=.*/#$ -l h_rt=${rt}/g" -e "s/#$ -N .*/#$ -N ${prefix}_${gauge:0:1}_${rr_name}/g" submit_mRM.sh -# # submit mRM optimization and obtain job id for that resolution -# res_jid=$(qsub -terse -t 1-10 submit_mRM.sh ${run_dir}) -# # sleep for 5s such that qstat gets all jobs -# printf " waiting for 5s such that job is registered by qstat\n" -# sleep 5 -# # submit python jobs for this resolution -# qsub -hold_jid ${res_jid%.*} run_python_scripts.sh -d ${target_dir}/ -b ${bb} -r ${rr} -e ${Nrealization} -p ${ptn_dir} -o ${target_dir}'/'${bb}'/res_'${rr} -n ${file_nml} > /dev/null -# # append res_jid to basin_jids -# basin_ids=${basin_ids}${res_jid%.*}, -# else -# ./run_python_scripts.sh -d ${target_dir}/ -b ${bb} -r ${rr} -e ${Nrealization} -p ${ptn_dir} -o ${target_dir}'/'${bb}'/res_'${rr} -n ${file_nml} -# fi -# # end resolution loop -# done -# if [[ ${do_mrm} == 'True' ]]; then -# # submit python job for this basin, give -r flag to each resolutions -# qsub -hold_jid ${basin_ids} run_python_scripts.sh -d ${target_dir}/ -b ${bb} -r $(echo ${res} | sed -e 's/ / -r /g') -e ${Nrealization} -p ${ptn_dir} -o ${target_dir}'/'${bb} -n ${file_nml} > /dev/null -# # append basin ids to all ids -# all_ids=${all_ids}${basin_ids} -# else -# ./run_python_scripts.sh -d ${target_dir}/ -b ${bb} -r $(echo ${res} | sed -e 's/ / -r /g') -e ${Nrealization} -p ${ptn_dir} -o ${target_dir}'/'${bb} -n ${file_nml} -# fi -# # end basin loops -# done -# printf "submitted all mRM runs\n" -# if [[ ${do_mrm} == 'True' ]]; then -# # submit python jobs for all basins and resolutions, give -b flag to each basin, give -r flag to each resolutions -# qsub -hold_jid ${all_ids} run_python_scripts.sh -d ${target_dir}/ -b ${basins/ / -b } -r ${res/ / -r } -e ${Nrealization} -p ${ptn_dir} -o ${target_dir} -n ${file_nml} -# else -# ./run_python_scripts.sh -d ${target_dir}/ -b $(echo ${basins} | sed -e 's/ / -b /g') -r $(echo ${res} | sed -e 's/ / -r /g') -e ${Nrealization} -p ${ptn_dir} -o ${target_dir} -n ${file_nml} -# fi -# printf "Done!\n" diff --git a/check/case_mrm_01/input/test_domain_1/mHM_Fluxes_States.nc b/check/case_mrm_01/input/test_domain_1/mHM_Fluxes_States.nc deleted file mode 100644 index c947a3e9ed96190d76dc98af2d01f01c29688766..0000000000000000000000000000000000000000 Binary files a/check/case_mrm_01/input/test_domain_1/mHM_Fluxes_States.nc and /dev/null differ diff --git a/check/case_mrm_01/input/test_domain_2/mHM_Fluxes_States.nc b/check/case_mrm_01/input/test_domain_2/mHM_Fluxes_States.nc deleted file mode 100644 index 7bffdd5dfcf0011e815bfb26b4914414a2c45351..0000000000000000000000000000000000000000 Binary files a/check/case_mrm_01/input/test_domain_2/mHM_Fluxes_States.nc and /dev/null differ diff --git a/check/case_mrm_01/mrm.nml b/check/case_mrm_01/mrm.nml deleted file mode 100644 index c8b3bae93f662a328a17cc9080c315d53f4540e6..0000000000000000000000000000000000000000 --- a/check/case_mrm_01/mrm.nml +++ /dev/null @@ -1,560 +0,0 @@ -! Emacs: -*- mode: f90 -*- -!> \file mhm.nml -! -!> \brief Namelists of mHM, MPR, mRM -! -!> \details This files provides all namelists for mHM, MPR, mRM. -! -!> \authors Matthias Zink, Matthias Cuntz -!> \date Jan 2013 -! Modified, -! Rohini Kumar, Aug 2013 - added "fracSealed_cityArea" in the LCover namelist -! - added new namelist "LAI_data_information" -! - added new directory paths for soil and geology LUTs -! which are common to all modeled domains -! Luis Samaniego, Nov 2013 - process description -! Matthias Zink, Mar 2014 - added evaluation and inflow gauge namelists -! Rohini Kumar, May 2014 - options for different cordinate system for the model run -! Stephan Thober, May 2014 - added switch for chunk read in -! Stephan Thober, Jun 2014 - reorganized restart flags, added flag for performing mpr -! Kumar R., Rakovec O. Sep 2014 - added KGE estimator (OF number 9) -! Matthias Zink, Nov 2014 - added multiple options for process 5 - PET -! Matthias Zink, Dec 2014 - adopted inflow gauges to ignore headwater cells -! Matthias Zink, Mar 2015 - added optional soil mositure read in for calibration -! Stephan Thober, Nov 2016 - added adaptive timestep scheme for routing -! Rohini Kumar, Dec 2017 - added LAI option to read long term mean monthly fields -! Zink M. Demirel M.C., Mar 2017 - added Jarvis soil water stress function at SM process(3)=2 -! Demirel M.C., Stisen S., May 2017 - added FC dependency on root fraction coef. at SM process(3)=3 -! Demirel M.C., Stisen S., Jun 2017 - added PET correction based on LAI at PET process(5)=-1 -! O. Rakovec, R. Kumar Nov 2017 - added project description for the netcdf outputs -! Robert Schweppe Apr 2018 - reorganized namelists depending on relation to processes (MPR, mHM, mRM) -! S. Thober, B. Guse May 2018 - added weighted NSE - -!****************************************************************************************** -! PROJECT DESCRIPTION (mandatory) -!****************************************************************************************** -!----------------------------------------------------------------------------- -!> Provide details on the model simulations, to appear in the netcdf output attributes -!----------------------------------------------------------------------------- -&project_description -!> project name -project_details="mHM test domain project" -!> any specific description of simulation -setup_description="model run for the Mosel domain, forced with the E-OBS meteorologic data" -!> e.g. hindcast simulation, seasonal forecast, climate projection -simulation_type="historical simulation" -!> convention used for dataset -Conventions="XXX" -!> contact details, incl. PI name, modellers -contact="mHM developers (email:mhm-developers@ufz.de)" -!> developing institution, specific mHM revision, latest release version (automatically included) -mHM_details="Helmholtz Center for Environmental Research - UFZ, Department Computational Hydrosystems, Stochastic Hydrology Group" -!> some details on data/model run version (creation date is included automatically) -history="model run version 1" -/ - -!****************************************************************************************** -! -!****************************************************************************************** -! MAIN (mandatory) -!****************************************************************************************** -!> Main namelist -!> Most of the variables (if not all) given in this namelist are common -!> to all domains to be modeled. -&mainconfig -!----------------------------------------------------------------------------- -!> input data & model run cordinate system -!> 0 -> regular X & Y coordinate system (e.g., GK-4 or Lambert equal area system) -!> 1 -> regular lat & lon coordinate system -!----------------------------------------------------------------------------- -iFlag_cordinate_sys = 0 -!----------------------------------------------------------------------------- -!> Number of domains to be modeled. -!> Number given here should correspond to one given in "gaugeinfo.txt" file. -!> All gauging stations within those domains will be taken for the optimization. -!> IF routing process is ON then give nDomains = 1, for this case, mHM will internally -!> discard gauging station information. -!----------------------------------------------------------------------------- -nDomains = 2 -!----------------------------------------------------------------------------- -!> resolution of Level-1 hydrological simulations in mHM [m or degree] per domain -!> NOTE: if iFlag_cordinate_sys = 0, then resolution_Hydrology is in [m] -!> if iFlag_cordinate_sys = 1, then resolution_Hydrology is in [degree-decimal] -!----------------------------------------------------------------------------- -resolution_Hydrology(1) = 24000 -resolution_Hydrology(2) = 24000 -!---------------------------------------------------------------------------- -!> specify same index for domains to share L0_data to save memory -!> the index must MONOTONICALLY increase. Index can be repeated. e.g., 1,1,2,2,3 -!> but not 1,2,1. The correct way should be: 1,1,2. -!----------------------------------------------------------------------------- -L0Domain(1) = 1 -L0Domain(2) = 2 -!----------------------------------------------------------------------------- -!> flag for writing restart output -!----------------------------------------------------------------------------- -write_restart = .TRUE. -/ -!----------------------------------------------------------------------------- -!> read domain specific optional data -!----------------------------------------------------------------------------- -!> (0) default: the program decides. If you are confused, choose 0 -!> (1) runoff -!> (2) sm -!> (3) tws -!> (4) neutons -!> (5) et -!> (6) et & tws -read_opt_domain_data(1) = 0 -read_opt_domain_data(2) = 0 -!****************************************************************************************** -! main config for mHM and mRM (mHM and mRM-related) -!****************************************************************************************** -&mainconfig_mhm_mrm -!----------------------------------------------------------------------------- -! DIRECTORIES -!----------------------------------------------------------------------------- -!> Number in brackets indicates domain number. -!> directory where restart input is located -mrm_file_restartin(1) = "../../test_domain/restart/" -!> directory where restart input is located -mrm_file_restartin(2) = "../../test_domain_2/restart/" -!----------------------------------------------------------------------------- -!> resolution of Level-11 discharge routing [m or degree] per domain -!> this level-11 discharge routing resolution must be >= and multiple of the -!> level-1 hydrological simulations resolution -!> NOTE: if iFlag_cordinate_sys = 0, then resolution_Routing is in [m] -!> if iFlag_cordinate_sys = 1, then resolution_Routing is in [degree-decimal] -!----------------------------------------------------------------------------- -resolution_Routing(1) = 24000 -resolution_Routing(2) = 24000 -!----------------------------------------------------------------------------- -!> model run timestep [h] either 1 or 24 -!----------------------------------------------------------------------------- -timestep = 24 -!----------------------------------------------------------------------------- -!> flags for reading restart output -!----------------------------------------------------------------------------- -read_restart = .FALSE. -!----------------------------------------------------------------------------- -!> flag for optimization: .TRUE.: optimization -!> or .FALSE.: no optimazition -!----------------------------------------------------------------------------- -optimize = .FALSE. -!> Optimization shall be restarted from ./mo_.restart file, which -!> should be located next to the mhm executable (mhm) -optimize_restart = .FALSE. -!> (0) MCMC (requires single-objective (SO) function) -!> (1) DDS (requires single-objective (SO) function) -!> (2) Simulated Annealing (requires single-objective (SO) function) -!> (3) SCE (requires single-objective (SO) function) -!> additional settings for the different methods can be provided below in namelist Optimization -opti_method = 1 -!> (1) SO: Q: 1.0 - NSE -!> (2) SO: Q: 1.0 - lnNSE -!> (3) SO: Q: 1.0 - 0.5*(NSE+lnNSE) -!> (4) SO: Q: -1.0 * loglikelihood with trend removed from absolute errors and then lag(1)-autocorrelation removed -!> (5) SO: Q: ((1-NSE)**6+(1-lnNSE)**6)**(1/6) -!> (6) SO: Q: SSE -!> (7) SO: Q: -1.0 * loglikelihood with trend removed from absolute errors -!> (8) SO: Q: -1.0 * loglikelihood with trend removed from the relative errors and then lag(1)-autocorrelation removed -!> (9) SO: Q: 1.0 - KGE (Kling-Gupta efficiency measure) -!> (10) SO: SM: 1.0 - KGE of catchment average soilmoisture -!> (11) SO: SM: 1.0 - Pattern dissimilarity (PD) of spatially distributed soil moisture -!> (12) SO: SM: Sum of squared errors (SSE) of spatially distributed standard score (normalization) of soil moisture -!> (13) SO: SM: 1.0 - average temporal correlation of spatially distributed soil moisture -!> (14) SO: Q: sum[((1.0-KGE_i)/ nGauges)**6]**(1/6) > combination of KGE of every gauging station based on a power-6 norm -!> (15) SO: Q + domain_avg_TWS: [1.0-KGE(Q)]*RMSE(domain_avg_TWS) - objective function using Q and domain average (standard score) TWS -!> (16) (reserved) please use the next number when implementing a new one -!> MO: Q: 1st objective: (1) = 1.0 - NSE -!> Q: 2nd objective: (2) = 1.0 - lnNSE -!> (17) SO: N: 1.0 - KGE of spatio-temporal neutron data, catchment-average -!> (18) (reserved) please use the next number when implementing a new one -!> MO: Q: 1st objective: 1.0 - lnNSE(Q_highflow) (95% percentile) -!> Q: 2nd objective: 1.0 - lnNSE(Q_lowflow) (5% of data range) -!> (19) (reserved) please use the next number when implementing a new one -!> MO: Q: 1st objective: 1.0 - lnNSE(Q_highflow) (non-low flow) -!> Q: 2nd objective: 1.0 - lnNSE(Q_lowflow) (5% of data range) -!> (20) (reserved) please use the next number when implementing a new one -!> MO: Q: 1st objective: absolute difference in FDC's low-segment volume -!> Q: 2nd objective: 1.0 - NSE of discharge of months DJF -!> (21) (reserved) please use the next number when implementing a new one -!> SO: Q: ( (1.0-lnNSE(Q_highflow))**6 + (1.0-lnNSE(Q_lowflow))**6 )**(1/6) -!> where Q_highflow and Q_lowflow are calculated like in objective (19) -!> (22-26) (reserved MC/JM/ST) please use the next number when implementing a new one -!> (27) SO: ET: 1.0 - KGE of catchment average evapotranspiration -!> (28) SO: Q + SM: weighted OF using SM (OF12) and Q (OF14) equally weighted -!> further functions can be implemented in mo_objective_function and mo_mrm_objective_function -!> (29) SO: Q + ET: weighted OF using ET (OF27) and Q (OF14) equally weighted -!> (30) SO: Q + domain_avg_ET: [1.0-KGE(Q)]*RMSE(domain_avg_ET) - objective function using Q and domain average ET (standard score)$ -!> (31) SO: Q: 1 - weighted NSE (NSE is weighted with observed discharge) - -!> further functions can be implemented in mo_objective_function and mo_mrm_objective_function -opti_function = 10 -/ - -!****************************************************************************************** -! main config for mRM (mRM-related) -!****************************************************************************************** -&mainconfig_mrm -!----------------------------------------------------------------------------- -!> use ALMA convention for input and output variables -!> see http://www.lmd.jussieu.fr/~polcher/ALMA/convention_3.html -!> .False. -> default mHM units -!> .True. -> ALMA convention -!> CAUTION: at the moment, only Qall as input for mRM is affected -!----------------------------------------------------------------------------- -ALMA_convention = .FALSE. -!----------------------------------------------------------------------------- -!> for using mRM as the routing module for input other than from mHM -!> additional specifications for filename and netCDF variable can be made -!> default behaviour: -!> none given: get variable 'total_runoff' from file 'total_runoff.nc' -!> varnametotalrunoff given: get variable '${varnametotalrunoff}' from file '${varnametotalrunoff}.nc' -!> filenametotalrunoff given: get variable 'total_runoff' from file '${filenametotalrunoff}.nc' -!> both given: get variable '${varnametotalrunoff}' from file '${filenametotalrunoff}.nc' -!----------------------------------------------------------------------------- -varnametotalrunoff = 'Q' -filenametotalrunoff = 'mHM_Fluxes_States' -/ - -!****************************************************************************************** -! DIRECTORIES -!****************************************************************************************** -!> Namelist with all directories for common file as well as separate file for every domain. -!> Number in brackets indicates domain number. -!> This number HAS TO correspond with the number of domain given in the "mainconfig" -!> namelist as well as the indices given in "evaluation_gauges" namelist. -!****************************************************************************************** -! directories (mandatory) -!****************************************************************************************** -&directories_general -!> all directories are common to all domains -!> config run out file common to all modeled domains should be written to directory -dirConfigOut = "./" -! -!> directory where common input files should be located for all modeled domains -!> (only for *_classdefinition files) -dirCommonFiles = "../../test_domain/input/morph/" -! -!**** for domain 1 -!> directory where morphological files are located -dir_Morpho(1) = "../../test_domain/input/morph/" -!> directory where land cover files are located -dir_LCover(1) = "../../test_domain/input/luse/" -!> directory where restart output should be written -mhm_file_restartout(1) = "output_b1/b1_mHM_restart_001.nc" -mrm_file_restartout(1) = "output_b1/b1_mRM_restart_001.nc" -!> directory where output should be written -dir_Out(1) = "output_b1/b1_" -!> file containing latitude and longitude on the resolution_Hydrology -file_LatLon(1) = "../../test_domain/input/latlon/latlon_1.nc" - -! **** for domain 2 -!> directory where morphological files are located -dir_Morpho(2) = "../../test_domain_2/input/morph/" -!> directory where land cover files are located -dir_LCover(2) = "../../test_domain_2/input/luse/" -!> directory where restart output should be written -mhm_file_restartout(2) = "output_b1/b2_mHM_restart_002.nc" -mrm_file_restartout(2) = "output_b1/b2_mRM_restart_002.nc" -!> directory where output should be written -dir_Out(2) = "output_b1/b2_" -!> file containing latitude and longitude on the resolution_Hydrology -file_LatLon(2) = "../../test_domain_2/input/latlon/latlon.nc" -/ -!****************************************************************************************** -! directories (mRM-related) -!****************************************************************************************** -&directories_mRM -! -!----------------------------------------------------- -!> domain wise directory paths -!----------------------------------------------------- -! -!> directory where discharge files are located -dir_Gauges(1) = "../../test_domain/input/gauge/" -dir_Gauges(2) = "../../test_domain_2/input/gauge/" -!> directory where simulated runoff can be found (only required if coupling mode equals 0) -dir_Total_Runoff(1) = 'input/test_domain_1/' -dir_Total_Runoff(2) = 'input/test_domain_2/' -/ - -!****************************************************************************************** -! PROCESSES (mandatory) -!****************************************************************************************** -!> This matrix manages which processes and process descriptions are used for simulation. -!> The number of processes and its corresponding numbering are fixed. The process description can be -!> chosen from the options listed above the name of the particular process case. This number has to be -!> given for processCase(*). -! -&processSelection -!> interception -!> 1 - maximum Interception -processCase(1) = 1 -!> snow -!> 1 - degree-day approach -processCase(2) = 1 -!> soil moisture -!> 1 - Feddes equation for ET reduction, multi-layer infiltration capacity approach, Brooks-Corey like -!> 2 - Jarvis equation for ET reduction, multi-layer infiltration capacity approach, Brooks-Corey like -!> 3 - Jarvis equation for ET reduction and FC dependency on root fraction coefficient -processCase(3) = 1 -!> directRunoff -!> 1 - linear reservoir exceedance approach -processCase(4) = 1 -!> potential evapotranspiration (PET) -!> -1 - PET is input, LAI driven correction -!> 0 - PET is input, aspect driven correction -!> 1 - Hargreaves-Sammani method -!> 2 - Priestley-Taylor mehtod -!> 3 - Penman-Monteith method -processCase(5) = 0 -!> interflow -!> 1 - storage reservoir with one outflow threshold and nonlinear response -processCase(6) = 1 -!> percolation -!> 1 - GW assumed as linear reservoir -processCase(7) = 1 -!> routing -!> 0 - deactivated -!> 1 - Muskingum approach -!> 2 - adaptive timestep -processCase(8) = 3 -!> baseflow -!> 1 - recession parameters (not regionalized yet) -processCase(9) = 1 -!> ground albedo of cosmic-ray neutrons -!> THIS IS WORK IN PROGRESS, DO NOT USE FOR RESEARCH -!> 0 - deactivated -!> 1 - inverse N0 based on Desilets et al. 2010 -!> 2 - COSMIC forward operator by Shuttleworth et al. 2013 -processCase(10) = 0 -/ - -!****************************************************************************************** -! LAND COVER (mandatory) -!****************************************************************************************** -&LCover -!> Variables given in this namelist are common to all domains to be modeled. -!> Please make sure that the land cover periods are covering the simulation period. -!> number of land cover scenes to be used -!> The land cover scene periods are shared by all catchments. -!> The names should be equal for all domains. The land cover scnes have to be ordered -!> chronologically. -nLCoverScene = 2 -! indicate period with brackets behind variable -! first scene -!> starting year of land cover scene 1 -LCoverYearStart(1) = 1981 -!> ending year of land cover scnene 1 -LCoverYearEnd(1) = 1990 -!> name of land cover file for scnene 1 -LCoverfName(1) = 'lc_1981.asc' - -!> starting year of land cover scene 2 -LCoverYearStart(2) = 1991 -!> ending year of land cover scnene 2 -LCoverYearEnd(2) = 2000 -!> name of land cover file for scnene 2 -LCoverfName(2) = 'lc_1991.asc' -/ - -!****************************************************************************************** -! Time periods (mHM and mRM-related) -!****************************************************************************************** -&time_periods -!----------------------------------------------------------------------------- -!> specification of number of warming days [d] and the simulation period. -!> All dynamic data sets(e.g., meteo. forcings, landcover scenes) should start -!> from warming days and ends at the last day of the evaluation period. -! -!> 1---------2-------------------3 -!> -!> 1-> Starting of the effective modeling period (including the warming days) -!> 2-> Starting of the given simulation period -!> 3-> Ending of the given simulation period (= end of the effective modeling period) -! -!> IF you want to run the model from 2002/01/01 (Starting of the given simulation -!> period=2) to 2003/12/31 (End of the given simulation period=3) with 365 warming -!> day, which is 2001/01/01 = 1), THEN all dynamic datasets should be given for -!> the effective modeling period of 2001/01/01 to 2003/12/31. -!----------------------------------------------------------------------------- -warming_Days(1) = 0 -warming_Days(2) = 0 -!> first year of wanted simulation period -eval_Per(1)%yStart = 1990 -eval_Per(2)%yStart = 1993 -!> first month of wanted simulation period -eval_Per(1)%mStart = 01 -eval_Per(2)%mStart = 01 -!> first day of wanted simulation period -eval_Per(1)%dStart = 01 -eval_Per(2)%dStart = 01 -!> last year of wanted simulation period -eval_Per(1)%yEnd = 1993 -eval_Per(2)%yEnd = 1993 -!> last month of wanted simulation period -eval_Per(1)%mEnd = 12 -eval_Per(2)%mEnd = 12 -!> last day of wanted simulation period -eval_Per(1)%dEnd = 31 -eval_Per(2)%dEnd = 31 -/ - -!****************************************************************************************** -! INFORMATION RELATED TO LAI DATA (MPR-related) -!****************************************************************************************** -&LAI_data_information -! -!----------------------------------------------------------------------------------- -!> Flag timeStep_LAI_input identifies how LAI is read in mHM. -!> This flag is unique and valid for all domains. -! -!> timeStep_LAI_input -!> -!> 0: read LAI from long term monthly mean lookup table (related to land cover file). -!> The filename (LAI_classdefinition.txt) for the LUT is hard coded in mo_file.f90 -!> Information regarding long-term monthly mean LAI for land cover classes -!> appearing in all modeled domains should be included in this LUT file. -!> This is an unique file applicable to all domains to be modeled. -!> The respective plant functional type is in LAI_class.asc, which must be also given -!> and should be located in each domain's morph directory. -!> -!> < 0: Read gridded LAI files. -!> -1: gridded LAI are daily values -!> -2: gridded LAI are monthly values -!> -3: gridded LAI are yearly values -! -!> 1: read mean monthly gridded LAI values. -!> must be a separate *.nc file for every (modeled) domains. -!----------------------------------------------------------------------------------- -timeStep_LAI_input = 0 -!> input file format of gridded file (if timeStep_LAI_input < 0) -!> nc - assume one file with name lai.nc -!> input file format of gridded file (if timeStep_LAI_input == 1) -!> nc - assume one file with name lai.nc with 12 monthly grids of mean LAI estimates -inputFormat_gridded_LAI = "nc" -/ - -! -!****************************************************************************************** -! LCover information (MPR-related) -!****************************************************************************************** -&LCover_MPR -!>fraction of area within city assumed to be fully sealed [0.0-1.0] -fracSealed_cityArea = 0.6 -/ - -!****************************************************************************************** -! LAI gridded time series folder definition (optional, MPR-related) -!****************************************************************************************** -! this is only needed for timeStep_LAI_input != 0 -&directories_MPR -!> directory where gridded LAI files are located -dir_gridded_LAI(1) = "../../test_domain/input/lai/" -!> directory where gridded LAI files are located -dir_gridded_LAI(2) = "../../test_domain/input/lai/" -/ - -!****************************************************************************************** -! Specifcation of evaluation and inflow gauges (mRM-related) -!****************************************************************************************** -!> namelist controlling the gauging station information -!> The ID has to correspond to the ID's given in the 'gaugelocation.asc' and -!> to the filename containing the time series -&evaluation_gauges -!> Gauges for model evaluation -! -!> Total number of gauges (sum of all gauges in all subbains) -nGaugesTotal = 2 -!> structure of gauge_id(i,j) & gauge_filename(i,j): -!> 1st dimension is the number of the subdomain i -!> 2nd dimension is the number of the gauge j within the subdomain i -!> numbering has to be consecutive -! -!> domain 1 -!> number of gauges for subdomain (1) -NoGauges_domain(1) = 1 -!> in subdomain(1), this is the id of gauge(1) --> (1,1) -Gauge_id(1,1) = 398 -!> name of file with timeseries for subdomain(1) at gauge(1) --> (1,1) -gauge_filename(1,1) = "00398.txt" -! -!> domain 2 -!> number of gauges for subdomain (2) -NoGauges_domain(2) = 1 -!> in subdomain(2), this is the id of gauge(1) --> (2,1) -Gauge_id(2,1) = 45 -!> name of file with timeseries for subdomain(2) at gauge(1) --> (2,1) -Gauge_filename(2,1) = "45.txt" -/ - -&inflow_gauges -!> Gauges / gridpoints used for inflow to the model domain -!> e.g. in the case of upstream/headwater areas which are -!> not included in the model domain -! -!> Total number of inflow gauges (sum of all gauges in all subbains) -nInflowGaugesTotal = 0 -!> structure of gauge_id(i,j) & gauge_filename(i,j): -!> 1st dimension is the number of the subdomain i -!> 2nd dimension is the number of the gauge j within the subdomain i -!> numbering has to be consecutive -! -!> domain 1 -!> number of gauges for subdomain (1) -NoInflowGauges_domain(1) = 0 -!> id of inflow gauge(1) for subdomain(1) --> (1,1) -InflowGauge_id(1,1) = -9 -!> name of file with timeseries of inflow gauge(1) for subdomain(1) --> (1,1) -InflowGauge_filename(1,1) = "" -!> consider flows from upstream/headwater cells of inflow gauge(1) for subdomain(1) --> (1,1) -InflowGauge_Headwater(1,1) = .FALSE. -/ - -!****************************************************************************************** -! SETTINGS FOR OPTIMIZATION (mHM and mRM-related) -!****************************************************************************************** -&Optimization -! ------------------------------------- -!> General: -! ------------------------------------- -!> number of iteration steps by parameterset -nIterations = 7 -!> seed of random number gemerator (default: -9) -!> if default: seed is obtained from system clock -seed = 1235876 -! ------------------------------------- -!> DDS specific: -! ------------------------------------- -!> perturbation rate r (default: 0.2) -dds_r = 0.2 -! ------------------------------------- -!> SA specific: -! ------------------------------------- -!> Initial Temperature (default: -9.0) -!> if default: temperature is determined by algorithm of Ben-Ameur (2004) -sa_temp = -9.0 -! ------------------------------------- -!> SCE specific: -! ------------------------------------- -!> Number of Complexes (default: -9) -!> if default: ngs = 2 -sce_ngs = 2 -!> Points per Complex (default: -9) -!> if default: npg = 2n+1 -sce_npg = -9 -!> Points per Sub-Complex (default: -9) -!> if default: nps = n+1 -sce_nps = -9 -! ------------------------------------- -!> MCMC specific: -! ------------------------------------- -!> .true.: use MCMC for optimisation and estimation of parameter uncertainty -!> .false.: use MCMC for estimation of parameter uncertainty -mcmc_opti = .false. -!> Parameters of error model if mcmc_opti=.false. -!> e.g. for opti_function=8: two parameters a and b: err = a + b*Q -mcmc_error_params = 0.01, 0.6 -/ diff --git a/check/case_mrm_01/mrm_outputs.nml b/check/case_mrm_01/mrm_outputs.nml deleted file mode 100644 index cd920b50447bf77d031d70c8ddbf852828d5a23f..0000000000000000000000000000000000000000 --- a/check/case_mrm_01/mrm_outputs.nml +++ /dev/null @@ -1,27 +0,0 @@ - -! Emacs: -*- mode: f90 -*- -!1) First give the timestep for writing gridded model outputs -! It should be integer and has to be perfectly divisible -! by the number of total modeling time steps -!2) Define main outputs of the model as namelist -! the particular output flag is specified as .TRUE. / .FALSE -! for writing /not writing the output to a file -! SYNTAX = ".TRUE." or ".FALSE." -&NLoutputResults -! -! switch to control write out frequency of the gridded model outputs below -! >0: after each time steps -! 0: only at end of run -! -1: daily -! -2: monthly -! -3: yearly -timeStep_model_outputs_mrm = -1 -! -!---------------- -! 1. Fluxes -!---------------- -! -! routed streamflow (Qrouted in output flux) (L11_qMod) [m3 s-1] -- case 1 -outputFlxState_mrm(1)=.TRUE. -/ - diff --git a/check/case_mrm_01/mrm_parameter.nml b/check/case_mrm_01/mrm_parameter.nml deleted file mode 100644 index 474311e64d36983b0fe46003d157d727330ec500..0000000000000000000000000000000000000000 --- a/check/case_mrm_01/mrm_parameter.nml +++ /dev/null @@ -1,185 +0,0 @@ -! Emacs: -*- mode: f90 -*- -!global_parameters -!PARAMETER lower_bound upper_bound value FLAG SCALING -!interception -&interception1 -canopyInterceptionFactor = 0.1500, 0.4000, 0.15, 1, 1 -/ - -! snow -&snow1 -snowTreshholdTemperature = -2.0000, 2.0000, 1.0, 1, 1 -degreeDayFactor_forest = 0.0001, 4.0000, 1.5, 1, 1 -degreeDayFactor_impervious = 0.0000, 1.0000, 0.5, 1, 1 -degreeDayFactor_pervious = 0.0000, 2.0000, 0.5, 1, 1 -increaseDegreeDayFactorByPrecip = 0.1000, 0.9000, 0.5, 1, 1 -maxDegreeDayFactor_forest = 0.0000, 8.0000, 3.0, 1, 1 -maxDegreeDayFactor_impervious = 0.0000, 8.0000, 3.5, 1, 1 -maxDegreeDayFactor_pervious = 0.0000, 8.0000, 4.0, 1, 1 -/ - -! soilmoisture -&soilmoisture1 -orgMatterContent_forest = 0.0000, 20.000, 3.4, 1, 1 -orgMatterContent_impervious = 0.0000, 1.0000, 0.1, 1, 1 -orgMatterContent_pervious = 0.0000, 4.0000, 0.6, 1, 1 -PTF_lower66_5_constant = 0.6462, 0.9506, 0.76, 1, 1 -PTF_lower66_5_clay = 0.0001, 0.0029, 0.0009, 1, 1 -PTF_lower66_5_Db = -0.3727, -0.1871, -0.264, 1, 1 -PTF_higher66_5_constant = 0.5358, 1.1232, 0.89, 1, 1 -PTF_higher66_5_clay = -0.0055, 0.0049, -0.001, 1, 1 -PTF_higher66_5_Db = -0.5513, -0.0913, -0.324, 1, 1 -PTF_Ks_constant = -1.2000, -0.2850, -0.585, 1, 1 -PTF_Ks_sand = 0.0060, 0.0260, 0.0125, 1, 1 -PTF_Ks_clay = 0.0030, 0.0130, 0.0063, 1, 1 -PTF_Ks_curveSlope = 60.960, 60.960, 60.960, 0, 1 -rootFractionCoefficient_forest = 0.9000, 0.9990, 0.97, 1, 1 -rootFractionCoefficient_impervious = 0.9000, 0.9500, 0.93, 1, 1 -rootFractionCoefficient_pervious = 0.0010, 0.0900, 0.02, 1, 1 -infiltrationShapeFactor = 1.0000, 4.0000, 1.75, 1, 1 -/ - -&soilmoisture2 -orgMatterContent_forest = 0.0000, 20.000, 3.4, 1, 1 -orgMatterContent_impervious = 0.0000, 1.0000, 0.1, 1, 1 -orgMatterContent_pervious = 0.0000, 4.0000, 0.6, 1, 1 -PTF_lower66_5_constant = 0.6462, 0.9506, 0.76, 1, 1 -PTF_lower66_5_clay = 0.0001, 0.0029, 0.0009, 1, 1 -PTF_lower66_5_Db = -0.3727, -0.1871, -0.264, 1, 1 -PTF_higher66_5_constant = 0.5358, 1.1232, 0.89, 1, 1 -PTF_higher66_5_clay = -0.0055, 0.0049, -0.001, 1, 1 -PTF_higher66_5_Db = -0.5513, -0.0913, -0.324, 1, 1 -PTF_Ks_constant = -1.2000, -0.2850, -0.585, 1, 1 -PTF_Ks_sand = 0.0060, 0.0260, 0.0125, 1, 1 -PTF_Ks_clay = 0.0030, 0.0130, 0.0063, 1, 1 -PTF_Ks_curveSlope = 60.960, 60.960, 60.960, 0, 1 -rootFractionCoefficient_forest = 0.9000, 0.9990, 0.97, 1, 1 -rootFractionCoefficient_impervious = 0.9000, 0.9500, 0.93, 1, 1 -rootFractionCoefficient_pervious = 0.0010, 0.0900, 0.02, 1, 1 -infiltrationShapeFactor = 1.0000, 4.0000, 1.75, 1, 1 -jarvis_sm_threshold_c1 = 0.0000, 1.0000, 0.50, 1, 1 -/ - -&soilmoisture3 -orgMatterContent_forest = 0.0000, 20.000, 3.4, 1, 1 -orgMatterContent_impervious = 0.0000, 1.0000, 0.1, 1, 1 -orgMatterContent_pervious = 0.0000, 4.0000, 0.6, 1, 1 -PTF_lower66_5_constant = 0.6462, 0.9506, 0.76, 1, 1 -PTF_lower66_5_clay = 0.0001, 0.0029, 0.0009, 1, 1 -PTF_lower66_5_Db = -0.3727, -0.1871, -0.264, 1, 1 -PTF_higher66_5_constant = 0.5358, 1.1232, 0.89, 1, 1 -PTF_higher66_5_clay = -0.0055, 0.0049, -0.001, 1, 1 -PTF_higher66_5_Db = -0.5513, -0.0913, -0.324, 1, 1 -PTF_Ks_constant = -1.2000, -0.2850, -0.585, 1, 1 -PTF_Ks_sand = 0.0060, 0.0260, 0.0125, 1, 1 -PTF_Ks_clay = 0.0030, 0.0130, 0.0063, 1, 1 -PTF_Ks_curveSlope = 60.960, 60.960, 60.960, 0, 1 -rootFractionCoefficient_forest = 0.9000, 0.9990, 0.97, 1, 1 -rootFractionCoefficient_impervious = 0.9000, 0.9500, 0.93, 1, 1 -rootFractionCoefficient_pervious = 0.0010, 0.0900, 0.02, 1, 1 -infiltrationShapeFactor = 1.0000, 4.0000, 1.75, 1, 1 -rootFractionCoefficient_sand = 0.0010, 0.0900, 0.09, 1, 1 -rootFractionCoefficient_clay = 0.9000, 0.9990, 0.98, 1, 1 -jarvis_sm_threshold_c1 = 0.0000, 1.0000, 0.50, 1, 1 -/ - -! directSealedAreaRunoff -&directRunoff1 -imperviousStorageCapacity = 0.0000, 5.0000, 0.5, 1, 1 -/ - -! potential evapotranspiration -&PETminus1 ! PET is input, LAI driven correction -PET_a_forest = 0.3000, 1.3000, 0.3000, 1, 1 -PET_a_impervious = 0.3000, 1.3000, 0.8000, 1, 1 -PET_a_pervious = 0.3000, 1.3000, 1.3000, 1, 1 -PET_b = 0.0000, 1.5000, 1.5000, 1, 1 -PET_c = -2.000, 0.0000, -0.700, 1, 1 -/ -&PET0 ! PET is input, aspect driven correction -minCorrectionFactorPET = 0.7000, 1.3000, 0.9, 1, 1 -maxCorrectionFactorPET = 0.0000, 0.2000, 0.1, 1, 1 -aspectTresholdPET = 160.00, 200.00, 180.0, 1, 1 -/ -&PET1 ! PET - Hargreaves Samani -minCorrectionFactorPET = 0.7000, 1.3000, 0.9300, 1, 1 -maxCorrectionFactorPET = 0.0000, 0.2000, 0.1900, 1, 1 -aspectTresholdPET = 160.00, 200.00, 171.00, 1, 1 -HargreavesSamaniCoeff = 0.0016, 0.0030, 0.0023, 1, 1 -/ -&PET2 ! PET - Priestley Taylor -PriestleyTaylorCoeff = 0.75, 1.75, 1.1900, 1, 1 -PriestleyTaylorLAIcorr = -0.50, 0.20, 0.0580, 1, 1 -/ -&PET3 ! PET - Penman Monteith -canopyheigth_forest = 15.00, 40.00, 15.000, 1, 1 -canopyheigth_impervious = 0.01, 0.50, 0.0200, 1, 1 -canopyheigth_pervious = 0.10, 5.00, 0.1100, 1, 1 -displacementheight_coeff = 0.50, 0.85, 0.6400, 1, 1 -roughnesslength_momentum_coeff = 0.09, 0.16, 0.0950, 1, 1 -roughnesslength_heat_coeff = 0.07, 0.13, 0.0750, 1, 1 -stomatal_resistance = 10.00, 200.00, 56.000, 1, 1 -/ - -! interflow -&interflow1 -interflowStorageCapacityFactor = 75.000, 200.00, 85.0, 1, 1 -interflowRecession_slope = 0.0000, 10.000, 7.0, 1, 1 -fastInterflowRecession_forest = 1.0000, 3.0000, 1.5, 1, 1 -slowInterflowRecession_Ks = 1.0000, 30.000, 15.0, 1, 1 -exponentSlowInterflow = 0.0500, 0.3000, 0.125, 1, 1 -/ - - -! percolation -&percolation1 -rechargeCoefficient = 0.0000, 50.000, 35.0, 1, 1 -rechargeFactor_karstic = -5.0000, 5.0000, -1.0, 1, 1 -gain_loss_GWreservoir_karstic = 1.0000, 1.0000, 1.0, 0, 1 -/ - -! Muskingum routing parameters with MPR -&routing1 -muskingumTravelTime_constant = 0.3100, 0.3500, 0.325, 1, 1 -muskingumTravelTime_riverLength = 0.0700, 0.0800, 0.075, 1, 1 -muskingumTravelTime_riverSlope = 1.9500, 2.1000, 2.0, 1, 1 -muskingumTravelTime_impervious = 0.0900, 0.1100, 0.1, 1, 1 -muskingumAttenuation_riverSlope = 0.0100, 0.5000, 0.3, 1, 1 -/ - -! adaptive timestep routing -&routing2 -streamflow_celerity = 0.1, 15., 1.5, 0, 1 -/ - -! adaptive timestep routing - varying celerity -&routing3 -slope_factor = 0.1, 100., 30., 0, 1 -/ - -! ground albedo neutrons -! THIS IS WORK IN PROGRESS, DO NOT USE FOR RESEARCH -&neutrons1 -Desilets_N0 = 300.0, 2000.0, 1500.0, 0, 1 -COSMIC_N0 = 300.0, 2000.0, 1500.0, 0, 1 -COSMIC_N1 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_N2 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_alpha0 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_alpha1 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_L30 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_L31 = 0.01, 10.0, 1.0, 0, 1 -/ -! geological parameters (ordering according to file 'geology_classdefinition.txt') -! this parameters are NOT REGIONALIZED yet, i.e. these are and not -&geoparameter -GeoParam(1,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(2,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(3,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(4,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(5,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(6,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(7,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(8,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(9,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(10,:) = 1.000, 1000.00, 100.0, 1, 1 -/ diff --git a/check/case_mrm_01/output_save/b1_daily_discharge.out b/check/case_mrm_01/output_save/b1_daily_discharge.out deleted file mode 100644 index 3fe98fdf67d9ebcef0484978fb0a09e28a83e59c..0000000000000000000000000000000000000000 --- a/check/case_mrm_01/output_save/b1_daily_discharge.out +++ /dev/null @@ -1,1462 +0,0 @@ - No Day Mon Year Qobs_0000000398 Qsim_0000000398 - 1 1 1 1990 157.0000000 27.2026197 - 2 2 1 1990 129.0000000 104.7575685 - 3 3 1 1990 117.0000000 166.5331556 - 4 4 1 1990 111.0000000 184.7495740 - 5 5 1 1990 112.0000000 182.0371204 - 6 6 1 1990 93.0000000 176.8933870 - 7 7 1 1990 87.0000000 172.4266752 - 8 8 1 1990 84.0000000 166.1170780 - 9 9 1 1990 80.0000000 163.3396961 - 10 10 1 1990 78.0000000 161.6652199 - 11 11 1 1990 78.0000000 154.3778620 - 12 12 1 1990 77.0000000 145.9799404 - 13 13 1 1990 76.0000000 142.1581659 - 14 14 1 1990 73.0000000 141.8966218 - 15 15 1 1990 66.0000000 141.9883486 - 16 16 1 1990 76.0000000 144.3189833 - 17 17 1 1990 73.0000000 142.2673517 - 18 18 1 1990 71.0000000 138.4172049 - 19 19 1 1990 90.0000000 134.3475162 - 20 20 1 1990 82.0000000 128.6662994 - 21 21 1 1990 80.0000000 123.1772291 - 22 22 1 1990 81.0000000 117.9305041 - 23 23 1 1990 97.0000000 140.0917463 - 24 24 1 1990 198.0000000 159.7304751 - 25 25 1 1990 392.0000000 161.0093400 - 26 26 1 1990 519.0000000 159.8511413 - 27 27 1 1990 565.0000000 142.8860316 - 28 28 1 1990 331.0000000 127.5256984 - 29 29 1 1990 293.0000000 120.1973154 - 30 30 1 1990 302.0000000 117.9523270 - 31 31 1 1990 233.0000000 112.5287621 - 32 1 2 1990 198.0000000 111.6292543 - 33 2 2 1990 183.0000000 115.6236449 - 34 3 2 1990 206.0000000 117.0315305 - 35 4 2 1990 215.0000000 113.3697830 - 36 5 2 1990 183.0000000 105.5531087 - 37 6 2 1990 159.0000000 99.8921650 - 38 7 2 1990 167.0000000 96.6942218 - 39 8 2 1990 138.0000000 94.5780257 - 40 9 2 1990 126.0000000 93.6986138 - 41 10 2 1990 131.0000000 109.4377743 - 42 11 2 1990 173.0000000 132.4875283 - 43 12 2 1990 240.0000000 134.8723608 - 44 13 2 1990 270.0000000 143.1576726 - 45 14 2 1990 458.0000000 190.6699560 - 46 15 2 1990 996.0000000 245.3716095 - 47 16 2 1990 1370.0000000 251.7526334 - 48 17 2 1990 1540.0000000 229.9740838 - 49 18 2 1990 1210.0000000 203.3208700 - 50 19 2 1990 616.0000000 182.5042858 - 51 20 2 1990 465.0000000 167.1446101 - 52 21 2 1990 373.0000000 155.6430007 - 53 22 2 1990 298.0000000 146.7158540 - 54 23 2 1990 270.0000000 139.3069552 - 55 24 2 1990 234.0000000 132.8259007 - 56 25 2 1990 218.0000000 129.2557455 - 57 26 2 1990 203.0000000 148.8213349 - 58 27 2 1990 314.0000000 183.7853524 - 59 28 2 1990 520.0000000 227.2630712 - 60 1 3 1990 689.0000000 278.0532897 - 61 2 3 1990 777.0000000 305.4106761 - 62 3 3 1990 584.0000000 297.7951808 - 63 4 3 1990 429.0000000 270.4277627 - 64 5 3 1990 365.0000000 239.5203890 - 65 6 3 1990 281.0000000 213.0143769 - 66 7 3 1990 257.0000000 192.3395195 - 67 8 3 1990 231.0000000 175.9021435 - 68 9 3 1990 211.0000000 162.5560822 - 69 10 3 1990 191.0000000 152.2244884 - 70 11 3 1990 182.0000000 144.1974726 - 71 12 3 1990 173.0000000 137.5078927 - 72 13 3 1990 159.0000000 131.6144742 - 73 14 3 1990 153.0000000 126.3871146 - 74 15 3 1990 141.0000000 122.0380995 - 75 16 3 1990 136.0000000 118.6184255 - 76 17 3 1990 130.0000000 114.8741138 - 77 18 3 1990 123.0000000 110.9491747 - 78 19 3 1990 115.0000000 107.3316512 - 79 20 3 1990 113.0000000 104.1250801 - 80 21 3 1990 102.0000000 101.2714875 - 81 22 3 1990 105.0000000 98.8553424 - 82 23 3 1990 106.0000000 96.4499549 - 83 24 3 1990 87.0000000 94.0552674 - 84 25 3 1990 80.0000000 91.8460794 - 85 26 3 1990 84.0000000 89.9313427 - 86 27 3 1990 82.0000000 88.0464546 - 87 28 3 1990 91.0000000 86.9043534 - 88 29 3 1990 97.0000000 90.4751578 - 89 30 3 1990 110.0000000 92.4624514 - 90 31 3 1990 97.0000000 90.3373533 - 91 1 4 1990 93.0000000 86.9934847 - 92 2 4 1990 85.0000000 84.1985691 - 93 3 4 1990 84.0000000 83.3213508 - 94 4 4 1990 81.0000000 84.5530216 - 95 5 4 1990 81.0000000 84.4494604 - 96 6 4 1990 76.0000000 82.1813271 - 97 7 4 1990 72.0000000 79.8756860 - 98 8 4 1990 68.0000000 78.1314290 - 99 9 4 1990 72.0000000 76.3913290 - 100 10 4 1990 65.0000000 74.6736457 - 101 11 4 1990 62.0000000 73.0932411 - 102 12 4 1990 62.0000000 71.8502637 - 103 13 4 1990 65.0000000 72.3942060 - 104 14 4 1990 68.0000000 79.9812327 - 105 15 4 1990 75.0000000 89.8102555 - 106 16 4 1990 90.0000000 89.9969694 - 107 17 4 1990 92.0000000 87.7153891 - 108 18 4 1990 94.0000000 84.9338321 - 109 19 4 1990 110.0000000 84.1372247 - 110 20 4 1990 99.0000000 82.4484701 - 111 21 4 1990 86.0000000 79.7519428 - 112 22 4 1990 86.0000000 80.0797814 - 113 23 4 1990 86.0000000 81.1590869 - 114 24 4 1990 88.0000000 81.8962884 - 115 25 4 1990 93.0000000 82.5748621 - 116 26 4 1990 99.0000000 80.6013063 - 117 27 4 1990 86.0000000 77.5678343 - 118 28 4 1990 74.0000000 75.0230365 - 119 29 4 1990 72.0000000 73.1103623 - 120 30 4 1990 77.0000000 71.3630891 - 121 1 5 1990 56.0000000 69.6231669 - 122 2 5 1990 64.0000000 67.9547832 - 123 3 5 1990 58.0000000 66.3774146 - 124 4 5 1990 50.0000000 64.8846348 - 125 5 5 1990 50.0000000 63.4684238 - 126 6 5 1990 50.0000000 62.1219178 - 127 7 5 1990 50.0000000 60.8396954 - 128 8 5 1990 53.0000000 59.6412252 - 129 9 5 1990 62.0000000 58.7866961 - 130 10 5 1990 64.0000000 60.5985370 - 131 11 5 1990 65.0000000 62.3688238 - 132 12 5 1990 75.0000000 61.1091355 - 133 13 5 1990 71.0000000 58.8057924 - 134 14 5 1990 63.0000000 56.6598323 - 135 15 5 1990 61.0000000 55.1085182 - 136 16 5 1990 49.0000000 54.1338619 - 137 17 5 1990 46.0000000 53.2819697 - 138 18 5 1990 46.0000000 52.2344899 - 139 19 5 1990 48.0000000 51.2134385 - 140 20 5 1990 41.0000000 50.2782112 - 141 21 5 1990 45.0000000 49.8741545 - 142 22 5 1990 52.0000000 52.9250540 - 143 23 5 1990 50.0000000 54.1217884 - 144 24 5 1990 56.0000000 55.2450318 - 145 25 5 1990 41.0000000 54.4706399 - 146 26 5 1990 40.0000000 53.8094793 - 147 27 5 1990 39.0000000 51.2960913 - 148 28 5 1990 39.0000000 48.7432778 - 149 29 5 1990 33.0000000 47.2871945 - 150 30 5 1990 37.0000000 46.2929621 - 151 31 5 1990 30.0000000 45.4211445 - 152 1 6 1990 37.0000000 47.6864096 - 153 2 6 1990 36.0000000 48.0798372 - 154 3 6 1990 40.0000000 58.1306768 - 155 4 6 1990 45.0000000 67.4714752 - 156 5 6 1990 39.0000000 59.8067504 - 157 6 6 1990 48.0000000 51.5319626 - 158 7 6 1990 39.0000000 57.9633784 - 159 8 6 1990 49.0000000 77.4773181 - 160 9 6 1990 84.0000000 87.6392915 - 161 10 6 1990 91.0000000 80.9120466 - 162 11 6 1990 80.0000000 70.8977217 - 163 12 6 1990 66.0000000 64.3387963 - 164 13 6 1990 53.0000000 60.1093735 - 165 14 6 1990 64.0000000 57.4998395 - 166 15 6 1990 55.0000000 55.5738413 - 167 16 6 1990 54.0000000 53.7980158 - 168 17 6 1990 42.0000000 52.1496917 - 169 18 6 1990 48.0000000 50.6431332 - 170 19 6 1990 48.0000000 52.6209940 - 171 20 6 1990 60.0000000 61.7304318 - 172 21 6 1990 75.0000000 71.9278722 - 173 22 6 1990 78.0000000 71.4692858 - 174 23 6 1990 66.0000000 66.4616403 - 175 24 6 1990 63.0000000 61.1142337 - 176 25 6 1990 52.0000000 56.9601733 - 177 26 6 1990 49.0000000 54.5301635 - 178 27 6 1990 44.0000000 56.0753815 - 179 28 6 1990 51.0000000 57.1303048 - 180 29 6 1990 61.0000000 62.4058010 - 181 30 6 1990 81.0000000 81.9955327 - 182 1 7 1990 79.0000000 92.4179260 - 183 2 7 1990 92.0000000 81.7917405 - 184 3 7 1990 72.0000000 71.6244399 - 185 4 7 1990 58.0000000 71.7168437 - 186 5 7 1990 69.0000000 90.7201612 - 187 6 7 1990 94.0000000 102.7625859 - 188 7 7 1990 199.0000000 101.4661799 - 189 8 7 1990 133.0000000 98.9802180 - 190 9 7 1990 124.0000000 93.8682821 - 191 10 7 1990 123.0000000 88.0602462 - 192 11 7 1990 99.0000000 82.3047879 - 193 12 7 1990 88.0000000 77.6405542 - 194 13 7 1990 84.0000000 73.8768925 - 195 14 7 1990 72.0000000 70.6617163 - 196 15 7 1990 55.0000000 67.7880273 - 197 16 7 1990 65.0000000 65.1715927 - 198 17 7 1990 50.0000000 62.7741005 - 199 18 7 1990 50.0000000 60.5695423 - 200 19 7 1990 46.0000000 58.5363537 - 201 20 7 1990 44.0000000 56.6558491 - 202 21 7 1990 42.0000000 54.9117045 - 203 22 7 1990 37.0000000 53.2896176 - 204 23 7 1990 38.0000000 51.7770293 - 205 24 7 1990 44.0000000 50.3628884 - 206 25 7 1990 30.0000000 49.0374503 - 207 26 7 1990 26.0000000 47.7921058 - 208 27 7 1990 31.0000000 46.6192340 - 209 28 7 1990 33.0000000 47.2741337 - 210 29 7 1990 42.0000000 46.5846287 - 211 30 7 1990 36.0000000 44.1996272 - 212 31 7 1990 34.0000000 42.9155377 - 213 1 8 1990 25.0000000 41.9486092 - 214 2 8 1990 22.0000000 41.0645787 - 215 3 8 1990 28.0000000 40.2252774 - 216 4 8 1990 25.0000000 39.4233445 - 217 5 8 1990 19.0000000 38.6554480 - 218 6 8 1990 22.0000000 37.9189743 - 219 7 8 1990 19.0000000 37.2116903 - 220 8 8 1990 22.0000000 36.5313221 - 221 9 8 1990 19.0000000 35.8757079 - 222 10 8 1990 20.0000000 35.2431117 - 223 11 8 1990 19.0000000 34.6320309 - 224 12 8 1990 19.0000000 34.0410572 - 225 13 8 1990 22.0000000 34.7775386 - 226 14 8 1990 36.0000000 41.2602669 - 227 15 8 1990 31.0000000 50.5568389 - 228 16 8 1990 30.0000000 51.3732110 - 229 17 8 1990 28.0000000 45.4968530 - 230 18 8 1990 34.0000000 39.5284943 - 231 19 8 1990 21.0000000 35.6821110 - 232 20 8 1990 30.0000000 33.5745431 - 233 21 8 1990 22.0000000 32.5246318 - 234 22 8 1990 21.0000000 31.8206528 - 235 23 8 1990 23.0000000 31.2045132 - 236 24 8 1990 20.0000000 30.6220656 - 237 25 8 1990 29.0000000 30.0642843 - 238 26 8 1990 20.0000000 29.5320900 - 239 27 8 1990 22.0000000 29.1586603 - 240 28 8 1990 23.0000000 29.2839983 - 241 29 8 1990 35.0000000 29.3530407 - 242 30 8 1990 51.0000000 50.6319174 - 243 31 8 1990 80.0000000 95.8164253 - 244 1 9 1990 56.0000000 90.1001567 - 245 2 9 1990 33.0000000 61.0154317 - 246 3 9 1990 27.0000000 46.0713621 - 247 4 9 1990 27.0000000 40.6934620 - 248 5 9 1990 28.0000000 39.5330043 - 249 6 9 1990 26.0000000 40.5810268 - 250 7 9 1990 24.0000000 41.5765460 - 251 8 9 1990 33.0000000 40.5444076 - 252 9 9 1990 26.0000000 37.8993187 - 253 10 9 1990 27.0000000 35.7809742 - 254 11 9 1990 22.0000000 34.1107586 - 255 12 9 1990 22.0000000 32.9195411 - 256 13 9 1990 21.0000000 31.9387399 - 257 14 9 1990 22.0000000 31.0504026 - 258 15 9 1990 22.0000000 30.2245763 - 259 16 9 1990 22.0000000 29.4519497 - 260 17 9 1990 20.0000000 28.7269127 - 261 18 9 1990 22.0000000 28.0448157 - 262 19 9 1990 16.0000000 27.4015700 - 263 20 9 1990 22.0000000 26.7935493 - 264 21 9 1990 19.0000000 29.0843408 - 265 22 9 1990 32.0000000 48.3044528 - 266 23 9 1990 27.0000000 70.5269327 - 267 24 9 1990 45.0000000 75.6239206 - 268 25 9 1990 42.0000000 65.7909790 - 269 26 9 1990 39.0000000 50.1862382 - 270 27 9 1990 30.0000000 42.5629456 - 271 28 9 1990 28.0000000 39.4963521 - 272 29 9 1990 30.0000000 37.7368074 - 273 30 9 1990 30.0000000 44.6063892 - 274 1 10 1990 56.0000000 72.8658123 - 275 2 10 1990 72.0000000 101.8676045 - 276 3 10 1990 73.0000000 106.0738581 - 277 4 10 1990 68.0000000 99.8528590 - 278 5 10 1990 53.0000000 87.3988873 - 279 6 10 1990 42.0000000 79.4099966 - 280 7 10 1990 33.0000000 73.6952769 - 281 8 10 1990 42.0000000 68.7804283 - 282 9 10 1990 34.0000000 64.7566931 - 283 10 10 1990 36.0000000 61.3369369 - 284 11 10 1990 36.0000000 58.3019238 - 285 12 10 1990 28.0000000 55.5608714 - 286 13 10 1990 32.0000000 53.0729639 - 287 14 10 1990 27.0000000 50.8085494 - 288 15 10 1990 35.0000000 48.8147737 - 289 16 10 1990 42.0000000 47.6083983 - 290 17 10 1990 35.0000000 47.8925970 - 291 18 10 1990 39.0000000 52.2782203 - 292 19 10 1990 34.0000000 53.9294506 - 293 20 10 1990 32.0000000 50.3296518 - 294 21 10 1990 34.0000000 46.6347897 - 295 22 10 1990 27.0000000 44.3379089 - 296 23 10 1990 31.0000000 42.6898673 - 297 24 10 1990 28.0000000 41.2670434 - 298 25 10 1990 25.0000000 40.5221818 - 299 26 10 1990 29.0000000 44.3200564 - 300 27 10 1990 31.0000000 56.1885818 - 301 28 10 1990 65.0000000 102.5838070 - 302 29 10 1990 69.0000000 156.1870935 - 303 30 10 1990 157.0000000 167.6432320 - 304 31 10 1990 190.0000000 162.2389920 - 305 1 11 1990 115.0000000 154.2550627 - 306 2 11 1990 104.0000000 151.7599024 - 307 3 11 1990 100.0000000 151.8637993 - 308 4 11 1990 131.0000000 156.3400326 - 309 5 11 1990 130.0000000 160.9867941 - 310 6 11 1990 115.0000000 159.3343361 - 311 7 11 1990 102.0000000 150.0765131 - 312 8 11 1990 95.0000000 136.3969771 - 313 9 11 1990 81.0000000 121.8522894 - 314 10 11 1990 66.0000000 112.9219315 - 315 11 11 1990 67.0000000 116.5571099 - 316 12 11 1990 74.0000000 124.3123885 - 317 13 11 1990 109.0000000 136.9730893 - 318 14 11 1990 92.0000000 149.2473793 - 319 15 11 1990 92.0000000 157.1708266 - 320 16 11 1990 155.0000000 163.3588302 - 321 17 11 1990 159.0000000 168.1042147 - 322 18 11 1990 131.0000000 170.0907264 - 323 19 11 1990 161.0000000 174.5139568 - 324 20 11 1990 196.0000000 201.4842289 - 325 21 11 1990 336.0000000 254.3854571 - 326 22 11 1990 566.0000000 290.6212946 - 327 23 11 1990 373.0000000 308.0627800 - 328 24 11 1990 293.0000000 317.1160571 - 329 25 11 1990 264.0000000 317.9243670 - 330 26 11 1990 226.0000000 305.1358576 - 331 27 11 1990 201.0000000 279.6299133 - 332 28 11 1990 180.0000000 249.5427684 - 333 29 11 1990 161.0000000 224.0165455 - 334 30 11 1990 149.0000000 204.1399840 - 335 1 12 1990 134.0000000 185.4309091 - 336 2 12 1990 113.0000000 168.6103103 - 337 3 12 1990 99.0000000 153.1356456 - 338 4 12 1990 107.0000000 140.5492954 - 339 5 12 1990 99.0000000 131.0068785 - 340 6 12 1990 89.0000000 123.6671723 - 341 7 12 1990 77.0000000 117.4343417 - 342 8 12 1990 71.0000000 111.8719037 - 343 9 12 1990 68.0000000 106.8486214 - 344 10 12 1990 73.0000000 102.2923346 - 345 11 12 1990 84.0000000 98.1450669 - 346 12 12 1990 88.0000000 101.8438324 - 347 13 12 1990 92.0000000 111.4208594 - 348 14 12 1990 128.0000000 111.7838530 - 349 15 12 1990 136.0000000 106.8912398 - 350 16 12 1990 114.0000000 101.8413541 - 351 17 12 1990 101.0000000 97.3378746 - 352 18 12 1990 93.0000000 93.2238490 - 353 19 12 1990 85.0000000 89.4700768 - 354 20 12 1990 81.0000000 86.0460410 - 355 21 12 1990 106.0000000 97.1661538 - 356 22 12 1990 159.0000000 124.5732259 - 357 23 12 1990 250.0000000 141.0355259 - 358 24 12 1990 298.0000000 146.3872900 - 359 25 12 1990 261.0000000 155.6495848 - 360 26 12 1990 228.0000000 201.4266877 - 361 27 12 1990 409.0000000 269.5975530 - 362 28 12 1990 486.0000000 330.6156233 - 363 29 12 1990 440.0000000 396.6434546 - 364 30 12 1990 486.0000000 467.3050004 - 365 31 12 1990 774.0000000 543.1803153 - 366 1 1 1991 889.0000000 637.2598628 - 367 2 1 1991 863.0000000 735.1480379 - 368 3 1 1991 875.0000000 817.8124318 - 369 4 1 1991 932.0000000 845.8016126 - 370 5 1 1991 826.0000000 825.6493252 - 371 6 1 1991 731.0000000 777.9476433 - 372 7 1 1991 613.0000000 718.6027967 - 373 8 1 1991 610.0000000 678.8742214 - 374 9 1 1991 686.0000000 654.7493695 - 375 10 1 1991 556.0000000 646.1854380 - 376 11 1 1991 669.0000000 653.0241612 - 377 12 1 1991 828.0000000 644.9326631 - 378 13 1 1991 735.0000000 609.6496546 - 379 14 1 1991 513.0000000 544.6775979 - 380 15 1 1991 411.0000000 466.1238276 - 381 16 1 1991 345.0000000 392.5510920 - 382 17 1 1991 293.0000000 331.4255181 - 383 18 1 1991 251.0000000 284.4098740 - 384 19 1 1991 222.0000000 249.8030858 - 385 20 1 1991 215.0000000 224.5601649 - 386 21 1 1991 213.0000000 207.2940872 - 387 22 1 1991 202.0000000 199.1069291 - 388 23 1 1991 200.0000000 193.5499270 - 389 24 1 1991 192.0000000 186.0841416 - 390 25 1 1991 176.0000000 178.0002282 - 391 26 1 1991 164.0000000 169.8773717 - 392 27 1 1991 157.0000000 162.2437155 - 393 28 1 1991 134.0000000 155.2240327 - 394 29 1 1991 130.0000000 148.8334732 - 395 30 1 1991 119.0000000 143.0218970 - 396 31 1 1991 107.0000000 137.7217878 - 397 1 2 1991 112.0000000 132.8710461 - 398 2 2 1991 109.0000000 128.4157824 - 399 3 2 1991 101.0000000 124.3095119 - 400 4 2 1991 98.0000000 120.5120776 - 401 5 2 1991 84.0000000 116.9887048 - 402 6 2 1991 93.0000000 113.7092043 - 403 7 2 1991 80.0000000 110.6473031 - 404 8 2 1991 73.0000000 107.7800811 - 405 9 2 1991 89.0000000 105.0874959 - 406 10 2 1991 84.0000000 102.5519813 - 407 11 2 1991 78.0000000 100.1581071 - 408 12 2 1991 79.0000000 97.8922899 - 409 13 2 1991 77.0000000 95.7425463 - 410 14 2 1991 80.0000000 93.6982829 - 411 15 2 1991 72.0000000 91.7501159 - 412 16 2 1991 78.0000000 90.4722885 - 413 17 2 1991 74.0000000 89.7716244 - 414 18 2 1991 77.0000000 88.6731023 - 415 19 2 1991 73.0000000 89.3762392 - 416 20 2 1991 69.0000000 95.8299827 - 417 21 2 1991 74.0000000 110.5944578 - 418 22 2 1991 81.0000000 130.8578333 - 419 23 2 1991 110.0000000 142.9116558 - 420 24 2 1991 180.0000000 147.0589439 - 421 25 2 1991 213.0000000 146.1383305 - 422 26 2 1991 222.0000000 143.3893275 - 423 27 2 1991 208.0000000 141.7588119 - 424 28 2 1991 211.0000000 141.2952099 - 425 1 3 1991 214.0000000 139.6818235 - 426 2 3 1991 208.0000000 138.6028567 - 427 3 3 1991 221.0000000 138.2155885 - 428 4 3 1991 281.0000000 135.9604506 - 429 5 3 1991 219.0000000 131.5244722 - 430 6 3 1991 190.0000000 126.1100792 - 431 7 3 1991 173.0000000 121.0088364 - 432 8 3 1991 164.0000000 116.3603566 - 433 9 3 1991 142.0000000 112.2585859 - 434 10 3 1991 133.0000000 109.0356746 - 435 11 3 1991 133.0000000 107.0576855 - 436 12 3 1991 118.0000000 105.3833330 - 437 13 3 1991 127.0000000 102.6985277 - 438 14 3 1991 113.0000000 99.5030657 - 439 15 3 1991 107.0000000 96.4234694 - 440 16 3 1991 100.0000000 93.5767913 - 441 17 3 1991 100.0000000 90.9385390 - 442 18 3 1991 95.0000000 88.4956197 - 443 19 3 1991 98.0000000 102.7825070 - 444 20 3 1991 119.0000000 126.9802656 - 445 21 3 1991 159.0000000 143.4092077 - 446 22 3 1991 196.0000000 156.7795512 - 447 23 3 1991 242.0000000 162.4439214 - 448 24 3 1991 216.0000000 161.1081997 - 449 25 3 1991 180.0000000 152.8419049 - 450 26 3 1991 145.0000000 143.5873523 - 451 27 3 1991 127.0000000 135.7767427 - 452 28 3 1991 117.0000000 129.4039653 - 453 29 3 1991 109.0000000 123.5837600 - 454 30 3 1991 106.0000000 118.0626467 - 455 31 3 1991 99.0000000 112.9792611 - 456 1 4 1991 96.0000000 108.3559681 - 457 2 4 1991 88.0000000 104.1495323 - 458 3 4 1991 87.0000000 100.3106570 - 459 4 4 1991 82.0000000 96.9199580 - 460 5 4 1991 84.0000000 94.0497787 - 461 6 4 1991 67.0000000 91.4460582 - 462 7 4 1991 89.0000000 88.9356609 - 463 8 4 1991 75.0000000 86.5683560 - 464 9 4 1991 79.0000000 84.3073250 - 465 10 4 1991 70.0000000 82.0843737 - 466 11 4 1991 69.0000000 79.9342072 - 467 12 4 1991 69.0000000 77.8948171 - 468 13 4 1991 56.0000000 75.9732280 - 469 14 4 1991 63.0000000 74.1633851 - 470 15 4 1991 58.0000000 72.4564658 - 471 16 4 1991 56.0000000 70.8445573 - 472 17 4 1991 54.0000000 69.3166414 - 473 18 4 1991 57.0000000 67.8873193 - 474 19 4 1991 53.0000000 66.6664392 - 475 20 4 1991 53.0000000 65.9148929 - 476 21 4 1991 65.0000000 65.2514631 - 477 22 4 1991 69.0000000 65.7320404 - 478 23 4 1991 61.0000000 65.8372069 - 479 24 4 1991 56.0000000 65.5487510 - 480 25 4 1991 56.0000000 64.6627206 - 481 26 4 1991 53.0000000 63.3177527 - 482 27 4 1991 49.0000000 61.7950313 - 483 28 4 1991 53.0000000 60.4573761 - 484 29 4 1991 48.0000000 61.0556802 - 485 30 4 1991 57.0000000 71.9938939 - 486 1 5 1991 69.0000000 87.1259805 - 487 2 5 1991 89.0000000 91.1921769 - 488 3 5 1991 105.0000000 86.0766542 - 489 4 5 1991 79.0000000 79.4446550 - 490 5 5 1991 69.0000000 75.2731866 - 491 6 5 1991 71.0000000 72.5775163 - 492 7 5 1991 60.0000000 70.4806075 - 493 8 5 1991 64.0000000 68.6051638 - 494 9 5 1991 59.0000000 66.7158991 - 495 10 5 1991 57.0000000 64.8902513 - 496 11 5 1991 55.0000000 63.8303688 - 497 12 5 1991 53.0000000 64.4387275 - 498 13 5 1991 52.0000000 64.1303570 - 499 14 5 1991 50.0000000 62.6147275 - 500 15 5 1991 52.0000000 61.1491308 - 501 16 5 1991 54.0000000 61.4991640 - 502 17 5 1991 54.0000000 63.6929128 - 503 18 5 1991 55.0000000 63.0272006 - 504 19 5 1991 48.0000000 60.7845385 - 505 20 5 1991 48.0000000 58.9848727 - 506 21 5 1991 49.0000000 57.5806409 - 507 22 5 1991 41.0000000 56.3294787 - 508 23 5 1991 40.0000000 55.1524993 - 509 24 5 1991 40.0000000 54.0312756 - 510 25 5 1991 39.0000000 52.9596344 - 511 26 5 1991 43.0000000 51.9335114 - 512 27 5 1991 39.0000000 50.9494111 - 513 28 5 1991 36.0000000 50.0041894 - 514 29 5 1991 33.0000000 49.0950010 - 515 30 5 1991 39.0000000 48.2192665 - 516 31 5 1991 34.0000000 47.3746448 - 517 1 6 1991 37.0000000 46.5590085 - 518 2 6 1991 35.0000000 45.7704225 - 519 3 6 1991 29.0000000 45.0071245 - 520 4 6 1991 33.0000000 44.2675076 - 521 5 6 1991 34.0000000 43.5504786 - 522 6 6 1991 32.0000000 49.6762086 - 523 7 6 1991 38.0000000 56.1538947 - 524 8 6 1991 39.0000000 55.0288934 - 525 9 6 1991 41.0000000 53.2335864 - 526 10 6 1991 44.0000000 55.7902638 - 527 11 6 1991 48.0000000 56.9830187 - 528 12 6 1991 42.0000000 51.2311948 - 529 13 6 1991 37.0000000 47.3401098 - 530 14 6 1991 39.0000000 45.5464990 - 531 15 6 1991 35.0000000 44.4051376 - 532 16 6 1991 31.0000000 43.5637792 - 533 17 6 1991 33.0000000 44.0365491 - 534 18 6 1991 31.0000000 46.5843007 - 535 19 6 1991 28.0000000 47.7491096 - 536 20 6 1991 60.0000000 55.4601148 - 537 21 6 1991 48.0000000 68.3745682 - 538 22 6 1991 54.0000000 63.2397778 - 539 23 6 1991 63.0000000 58.3680124 - 540 24 6 1991 41.0000000 57.2516510 - 541 25 6 1991 42.0000000 52.8876411 - 542 26 6 1991 43.0000000 49.8586925 - 543 27 6 1991 38.0000000 51.3509059 - 544 28 6 1991 38.0000000 52.8212922 - 545 29 6 1991 35.0000000 51.7266214 - 546 30 6 1991 41.0000000 50.9127495 - 547 1 7 1991 41.0000000 48.6082003 - 548 2 7 1991 38.0000000 46.5357242 - 549 3 7 1991 34.0000000 45.0400125 - 550 4 7 1991 27.0000000 43.8217579 - 551 5 7 1991 31.0000000 42.7193356 - 552 6 7 1991 30.0000000 41.6884721 - 553 7 7 1991 26.0000000 41.8663293 - 554 8 7 1991 30.0000000 45.7823622 - 555 9 7 1991 31.0000000 44.4451554 - 556 10 7 1991 23.0000000 41.2194534 - 557 11 7 1991 35.0000000 39.3346107 - 558 12 7 1991 19.0000000 38.2399038 - 559 13 7 1991 24.0000000 44.1828506 - 560 14 7 1991 26.0000000 54.9417040 - 561 15 7 1991 27.0000000 54.9196399 - 562 16 7 1991 41.0000000 49.5833609 - 563 17 7 1991 34.0000000 44.3020125 - 564 18 7 1991 27.0000000 41.1546656 - 565 19 7 1991 25.0000000 39.5500955 - 566 20 7 1991 23.0000000 38.4676244 - 567 21 7 1991 22.0000000 37.5294801 - 568 22 7 1991 27.0000000 36.6556515 - 569 23 7 1991 23.0000000 35.8307613 - 570 24 7 1991 21.0000000 35.0805031 - 571 25 7 1991 23.0000000 41.4854748 - 572 26 7 1991 33.0000000 49.9396060 - 573 27 7 1991 23.0000000 49.9074304 - 574 28 7 1991 29.0000000 45.0389112 - 575 29 7 1991 30.0000000 40.0372947 - 576 30 7 1991 35.0000000 41.2443937 - 577 31 7 1991 27.0000000 43.0210387 - 578 1 8 1991 45.0000000 44.7022057 - 579 2 8 1991 47.0000000 42.1732221 - 580 3 8 1991 40.0000000 38.6271044 - 581 4 8 1991 35.0000000 36.6517167 - 582 5 8 1991 26.0000000 35.5096194 - 583 6 8 1991 23.0000000 34.6077258 - 584 7 8 1991 30.0000000 35.0419429 - 585 8 8 1991 33.0000000 35.2805853 - 586 9 8 1991 30.0000000 33.9184980 - 587 10 8 1991 28.0000000 32.2123389 - 588 11 8 1991 19.0000000 31.3655608 - 589 12 8 1991 20.0000000 30.6888491 - 590 13 8 1991 16.0000000 30.0613010 - 591 14 8 1991 18.0000000 29.4645809 - 592 15 8 1991 18.0000000 28.8945006 - 593 16 8 1991 20.0000000 28.3487896 - 594 17 8 1991 16.0000000 27.8255460 - 595 18 8 1991 15.0000000 27.3230556 - 596 19 8 1991 15.0000000 26.8397634 - 597 20 8 1991 14.0000000 26.3742597 - 598 21 8 1991 15.0000000 25.9252669 - 599 22 8 1991 13.0000000 25.4916591 - 600 23 8 1991 12.0000000 25.0736287 - 601 24 8 1991 11.0000000 24.7236410 - 602 25 8 1991 12.0000000 24.5014720 - 603 26 8 1991 11.0000000 24.1051967 - 604 27 8 1991 13.0000000 23.6227043 - 605 28 8 1991 11.0000000 23.2133734 - 606 29 8 1991 12.0000000 22.8509671 - 607 30 8 1991 12.0000000 22.5064815 - 608 31 8 1991 11.0000000 22.1720615 - 609 1 9 1991 11.0000000 21.9022386 - 610 2 9 1991 17.0000000 22.5428086 - 611 3 9 1991 11.0000000 23.2962466 - 612 4 9 1991 12.0000000 22.2180071 - 613 5 9 1991 11.0000000 21.1111799 - 614 6 9 1991 11.0000000 20.5614030 - 615 7 9 1991 18.0000000 20.2221327 - 616 8 9 1991 11.0000000 19.9288009 - 617 9 9 1991 13.0000000 19.6471968 - 618 10 9 1991 12.0000000 19.3797004 - 619 11 9 1991 11.0000000 21.2245495 - 620 12 9 1991 20.0000000 34.7993780 - 621 13 9 1991 21.0000000 40.4527497 - 622 14 9 1991 29.0000000 31.2249477 - 623 15 9 1991 28.0000000 23.6328450 - 624 16 9 1991 20.0000000 20.9796182 - 625 17 9 1991 20.0000000 20.1660716 - 626 18 9 1991 20.0000000 19.7352214 - 627 19 9 1991 12.0000000 19.3722654 - 628 20 9 1991 11.0000000 19.0298052 - 629 21 9 1991 11.0000000 18.7013022 - 630 22 9 1991 22.0000000 19.5683917 - 631 23 9 1991 14.0000000 29.6650768 - 632 24 9 1991 48.0000000 36.4876122 - 633 25 9 1991 45.0000000 44.9968823 - 634 26 9 1991 80.0000000 64.2733351 - 635 27 9 1991 61.0000000 65.6281865 - 636 28 9 1991 61.0000000 72.1476815 - 637 29 9 1991 65.0000000 80.6022554 - 638 30 9 1991 63.0000000 78.7837888 - 639 1 10 1991 90.0000000 75.7707189 - 640 2 10 1991 59.0000000 67.3654673 - 641 3 10 1991 45.0000000 59.4898906 - 642 4 10 1991 42.0000000 54.3466757 - 643 5 10 1991 41.0000000 59.3642342 - 644 6 10 1991 41.0000000 78.2606484 - 645 7 10 1991 73.0000000 87.3938734 - 646 8 10 1991 96.0000000 80.1670651 - 647 9 10 1991 61.0000000 70.4199696 - 648 10 10 1991 44.0000000 63.9625689 - 649 11 10 1991 42.0000000 59.5729884 - 650 12 10 1991 41.0000000 61.7728250 - 651 13 10 1991 42.0000000 68.1690049 - 652 14 10 1991 61.0000000 71.4044973 - 653 15 10 1991 55.0000000 67.4871151 - 654 16 10 1991 41.0000000 63.8849597 - 655 17 10 1991 48.0000000 65.0980891 - 656 18 10 1991 52.0000000 75.5637658 - 657 19 10 1991 66.0000000 87.7368764 - 658 20 10 1991 59.0000000 84.4982657 - 659 21 10 1991 71.0000000 78.4009301 - 660 22 10 1991 74.0000000 73.5211916 - 661 23 10 1991 70.0000000 69.0173617 - 662 24 10 1991 59.0000000 64.8905858 - 663 25 10 1991 57.0000000 61.3474939 - 664 26 10 1991 57.0000000 58.2525673 - 665 27 10 1991 51.0000000 55.4920540 - 666 28 10 1991 47.0000000 52.9982188 - 667 29 10 1991 48.0000000 50.7311615 - 668 30 10 1991 45.0000000 49.2933477 - 669 31 10 1991 43.0000000 50.5323527 - 670 1 11 1991 40.0000000 57.1324852 - 671 2 11 1991 47.0000000 62.5570983 - 672 3 11 1991 46.0000000 65.3253577 - 673 4 11 1991 76.0000000 85.8388803 - 674 5 11 1991 60.0000000 111.0657969 - 675 6 11 1991 132.0000000 117.8634659 - 676 7 11 1991 133.0000000 121.5184431 - 677 8 11 1991 113.0000000 129.0132381 - 678 9 11 1991 120.0000000 136.3891460 - 679 10 11 1991 141.0000000 142.1978525 - 680 11 11 1991 208.0000000 153.3938934 - 681 12 11 1991 166.0000000 183.2209855 - 682 13 11 1991 183.0000000 213.4966494 - 683 14 11 1991 299.0000000 264.2922224 - 684 15 11 1991 521.0000000 344.1948933 - 685 16 11 1991 443.0000000 384.4584466 - 686 17 11 1991 304.0000000 373.8703980 - 687 18 11 1991 231.0000000 344.8832656 - 688 19 11 1991 192.0000000 317.8766694 - 689 20 11 1991 199.0000000 294.9247270 - 690 21 11 1991 201.0000000 276.8256134 - 691 22 11 1991 173.0000000 257.1341984 - 692 23 11 1991 159.0000000 232.2597136 - 693 24 11 1991 160.0000000 205.2018111 - 694 25 11 1991 146.0000000 180.8510728 - 695 26 11 1991 110.0000000 160.7854763 - 696 27 11 1991 114.0000000 144.2176934 - 697 28 11 1991 97.0000000 130.6754178 - 698 29 11 1991 89.0000000 120.5666559 - 699 30 11 1991 73.0000000 113.2783611 - 700 1 12 1991 69.0000000 107.5327300 - 701 2 12 1991 67.0000000 102.5617739 - 702 3 12 1991 63.0000000 98.0937148 - 703 4 12 1991 58.0000000 94.0328779 - 704 5 12 1991 59.0000000 90.3257075 - 705 6 12 1991 53.0000000 86.9303098 - 706 7 12 1991 54.0000000 83.8109318 - 707 8 12 1991 51.0000000 80.9365815 - 708 9 12 1991 47.0000000 78.2802820 - 709 10 12 1991 42.0000000 75.8184899 - 710 11 12 1991 40.0000000 73.5306091 - 711 12 12 1991 39.0000000 71.3985812 - 712 13 12 1991 36.0000000 69.4065381 - 713 14 12 1991 37.0000000 67.5405072 - 714 15 12 1991 32.0000000 65.7881599 - 715 16 12 1991 37.0000000 64.9548308 - 716 17 12 1991 62.0000000 94.3410842 - 717 18 12 1991 118.0000000 142.4606590 - 718 19 12 1991 170.0000000 191.5900062 - 719 20 12 1991 229.0000000 264.3997732 - 720 21 12 1991 448.0000000 353.6739458 - 721 22 12 1991 464.0000000 453.8046655 - 722 23 12 1991 675.0000000 548.7155776 - 723 24 12 1991 844.0000000 591.5814836 - 724 25 12 1991 569.0000000 564.2672657 - 725 26 12 1991 358.0000000 498.3167585 - 726 27 12 1991 279.0000000 426.2547845 - 727 28 12 1991 238.0000000 363.6336310 - 728 29 12 1991 201.0000000 312.7639731 - 729 30 12 1991 185.0000000 270.2218637 - 730 31 12 1991 165.0000000 234.8989808 - 731 1 1 1992 140.0000000 206.4267250 - 732 2 1 1992 126.0000000 183.8390687 - 733 3 1 1992 117.0000000 166.0322233 - 734 4 1 1992 114.0000000 154.3471868 - 735 5 1 1992 108.0000000 145.7695466 - 736 6 1 1992 108.0000000 138.1980154 - 737 7 1 1992 101.0000000 132.0219087 - 738 8 1 1992 97.0000000 128.1475486 - 739 9 1 1992 89.0000000 127.0807023 - 740 10 1 1992 111.0000000 137.4528482 - 741 11 1 1992 135.0000000 154.7984004 - 742 12 1 1992 171.0000000 159.1024358 - 743 13 1 1992 125.0000000 153.7584495 - 744 14 1 1992 111.0000000 145.7945129 - 745 15 1 1992 100.0000000 138.2685092 - 746 16 1 1992 87.0000000 131.5861288 - 747 17 1 1992 75.0000000 125.6506105 - 748 18 1 1992 79.0000000 120.2985418 - 749 19 1 1992 70.0000000 118.5056333 - 750 20 1 1992 72.0000000 116.7249993 - 751 21 1 1992 87.0000000 113.2720173 - 752 22 1 1992 79.0000000 109.5795346 - 753 23 1 1992 71.0000000 105.8654547 - 754 24 1 1992 66.0000000 102.1913797 - 755 25 1 1992 67.0000000 98.7175079 - 756 26 1 1992 65.0000000 95.4979020 - 757 27 1 1992 59.0000000 92.5205090 - 758 28 1 1992 57.0000000 89.7678350 - 759 29 1 1992 54.0000000 87.3043076 - 760 30 1 1992 59.0000000 85.6409584 - 761 31 1 1992 57.0000000 86.5333085 - 762 1 2 1992 56.0000000 90.0183733 - 763 2 2 1992 54.0000000 92.2674352 - 764 3 2 1992 58.0000000 92.4394477 - 765 4 2 1992 63.0000000 101.1720790 - 766 5 2 1992 76.0000000 127.2865174 - 767 6 2 1992 250.0000000 155.4816889 - 768 7 2 1992 346.0000000 178.8824114 - 769 8 2 1992 241.0000000 186.2585049 - 770 9 2 1992 180.0000000 180.8345672 - 771 10 2 1992 164.0000000 173.8491834 - 772 11 2 1992 183.0000000 178.0481660 - 773 12 2 1992 215.0000000 191.3984672 - 774 13 2 1992 265.0000000 205.7437378 - 775 14 2 1992 287.0000000 223.6576247 - 776 15 2 1992 272.0000000 238.2388944 - 777 16 2 1992 253.0000000 248.9833484 - 778 17 2 1992 301.0000000 260.6701313 - 779 18 2 1992 275.0000000 259.9903624 - 780 19 2 1992 224.0000000 243.6820400 - 781 20 2 1992 194.0000000 218.5830509 - 782 21 2 1992 173.0000000 194.4542922 - 783 22 2 1992 157.0000000 175.0633434 - 784 23 2 1992 142.0000000 160.7129721 - 785 24 2 1992 133.0000000 150.6494571 - 786 25 2 1992 128.0000000 143.6282568 - 787 26 2 1992 125.0000000 138.0712703 - 788 27 2 1992 125.0000000 132.4209697 - 789 28 2 1992 110.0000000 126.7185056 - 790 29 2 1992 107.0000000 121.4601967 - 791 1 3 1992 97.0000000 116.7466229 - 792 2 3 1992 97.0000000 112.5802006 - 793 3 3 1992 86.0000000 109.6043184 - 794 4 3 1992 93.0000000 108.1228474 - 795 5 3 1992 86.0000000 105.8553996 - 796 6 3 1992 82.0000000 102.7252107 - 797 7 3 1992 80.0000000 99.5429933 - 798 8 3 1992 77.0000000 96.5463065 - 799 9 3 1992 73.0000000 93.7588953 - 800 10 3 1992 76.0000000 91.2488156 - 801 11 3 1992 68.0000000 89.0317130 - 802 12 3 1992 70.0000000 103.3490165 - 803 13 3 1992 116.0000000 138.7180293 - 804 14 3 1992 206.0000000 175.2858108 - 805 15 3 1992 433.0000000 217.2187775 - 806 16 3 1992 495.0000000 264.6001886 - 807 17 3 1992 331.0000000 294.5165663 - 808 18 3 1992 240.0000000 292.3217088 - 809 19 3 1992 215.0000000 265.9019715 - 810 20 3 1992 185.0000000 234.3351628 - 811 21 3 1992 185.0000000 209.9057564 - 812 22 3 1992 185.0000000 202.9496743 - 813 23 3 1992 213.0000000 229.6475172 - 814 24 3 1992 466.0000000 282.6158467 - 815 25 3 1992 580.0000000 343.2760798 - 816 26 3 1992 566.0000000 379.5109724 - 817 27 3 1992 487.0000000 379.8596653 - 818 28 3 1992 387.0000000 354.1322124 - 819 29 3 1992 311.0000000 322.0320348 - 820 30 3 1992 270.0000000 290.5829533 - 821 31 3 1992 246.0000000 260.8487202 - 822 1 4 1992 229.0000000 239.7996934 - 823 2 4 1992 222.0000000 239.0139571 - 824 3 4 1992 217.0000000 241.0855867 - 825 4 4 1992 208.0000000 242.6127506 - 826 5 4 1992 220.0000000 264.5332146 - 827 6 4 1992 210.0000000 279.8920524 - 828 7 4 1992 190.0000000 270.1450029 - 829 8 4 1992 173.0000000 245.4860371 - 830 9 4 1992 166.0000000 218.9572533 - 831 10 4 1992 133.0000000 195.8672809 - 832 11 4 1992 126.0000000 177.1674456 - 833 12 4 1992 124.0000000 162.1300792 - 834 13 4 1992 116.0000000 150.3146039 - 835 14 4 1992 112.0000000 142.7417858 - 836 15 4 1992 111.0000000 145.9187715 - 837 16 4 1992 137.0000000 160.9871670 - 838 17 4 1992 206.0000000 171.9385988 - 839 18 4 1992 176.0000000 175.5724641 - 840 19 4 1992 161.0000000 171.3608969 - 841 20 4 1992 161.0000000 163.7491530 - 842 21 4 1992 139.0000000 155.5205474 - 843 22 4 1992 139.0000000 148.1177581 - 844 23 4 1992 123.0000000 141.6846906 - 845 24 4 1992 119.0000000 135.9667981 - 846 25 4 1992 111.0000000 130.7926064 - 847 26 4 1992 94.0000000 126.1019828 - 848 27 4 1992 94.0000000 121.9373593 - 849 28 4 1992 102.0000000 120.1106720 - 850 29 4 1992 120.0000000 121.7283231 - 851 30 4 1992 120.0000000 122.1059309 - 852 1 5 1992 114.0000000 123.3481129 - 853 2 5 1992 115.0000000 135.3372774 - 854 3 5 1992 206.0000000 144.8710764 - 855 4 5 1992 215.0000000 143.7925389 - 856 5 5 1992 125.0000000 137.4373628 - 857 6 5 1992 123.0000000 131.0859314 - 858 7 5 1992 113.0000000 125.7979718 - 859 8 5 1992 77.0000000 121.1913035 - 860 9 5 1992 83.0000000 117.2852885 - 861 10 5 1992 83.0000000 119.3483082 - 862 11 5 1992 96.0000000 122.9576430 - 863 12 5 1992 120.0000000 116.8480843 - 864 13 5 1992 80.0000000 110.3572602 - 865 14 5 1992 76.0000000 106.5624136 - 866 15 5 1992 69.0000000 103.3654773 - 867 16 5 1992 63.0000000 100.4213365 - 868 17 5 1992 61.0000000 97.6807790 - 869 18 5 1992 60.0000000 95.1202165 - 870 19 5 1992 59.0000000 92.7207630 - 871 20 5 1992 67.0000000 90.4661800 - 872 21 5 1992 51.0000000 88.3429742 - 873 22 5 1992 44.0000000 86.3397196 - 874 23 5 1992 42.0000000 84.4437159 - 875 24 5 1992 51.0000000 82.6434728 - 876 25 5 1992 42.0000000 80.9832787 - 877 26 5 1992 54.0000000 84.3062836 - 878 27 5 1992 53.0000000 85.9579609 - 879 28 5 1992 59.0000000 80.3071737 - 880 29 5 1992 55.0000000 81.1707647 - 881 30 5 1992 54.0000000 83.2267586 - 882 31 5 1992 48.0000000 80.6266972 - 883 1 6 1992 63.0000000 78.6689366 - 884 2 6 1992 61.0000000 78.8555559 - 885 3 6 1992 55.0000000 80.2970476 - 886 4 6 1992 75.0000000 81.8684612 - 887 5 6 1992 53.0000000 93.1897761 - 888 6 6 1992 77.0000000 103.0387941 - 889 7 6 1992 114.0000000 104.4927526 - 890 8 6 1992 167.0000000 107.3779293 - 891 9 6 1992 116.0000000 110.3683102 - 892 10 6 1992 91.0000000 102.8245111 - 893 11 6 1992 85.0000000 96.5717504 - 894 12 6 1992 68.0000000 92.1673588 - 895 13 6 1992 71.0000000 88.8462199 - 896 14 6 1992 63.0000000 85.9815269 - 897 15 6 1992 59.0000000 83.3686205 - 898 16 6 1992 46.0000000 80.9501462 - 899 17 6 1992 44.0000000 78.7005233 - 900 18 6 1992 39.0000000 76.6013306 - 901 19 6 1992 41.0000000 74.6576031 - 902 20 6 1992 44.0000000 74.0443030 - 903 21 6 1992 39.0000000 73.1469699 - 904 22 6 1992 32.0000000 70.6532493 - 905 23 6 1992 40.0000000 70.6710669 - 906 24 6 1992 41.0000000 76.6124189 - 907 25 6 1992 42.0000000 76.9252800 - 908 26 6 1992 42.0000000 72.9365870 - 909 27 6 1992 48.0000000 69.7784632 - 910 28 6 1992 37.0000000 67.2483671 - 911 29 6 1992 40.0000000 65.2195281 - 912 30 6 1992 29.0000000 63.6082127 - 913 1 7 1992 30.0000000 62.2544983 - 914 2 7 1992 36.0000000 61.2266420 - 915 3 7 1992 29.0000000 60.4388223 - 916 4 7 1992 36.0000000 62.5607755 - 917 5 7 1992 50.0000000 78.1488867 - 918 6 7 1992 78.0000000 90.1902658 - 919 7 7 1992 54.0000000 88.3265355 - 920 8 7 1992 57.0000000 78.9999728 - 921 9 7 1992 51.0000000 71.3205572 - 922 10 7 1992 47.0000000 74.8162964 - 923 11 7 1992 46.0000000 84.5847449 - 924 12 7 1992 76.0000000 92.4450197 - 925 13 7 1992 72.0000000 92.1794193 - 926 14 7 1992 67.0000000 88.4847388 - 927 15 7 1992 63.0000000 82.3236162 - 928 16 7 1992 47.0000000 77.2647827 - 929 17 7 1992 47.0000000 73.8967463 - 930 18 7 1992 42.0000000 71.2765779 - 931 19 7 1992 41.0000000 68.9593595 - 932 20 7 1992 39.0000000 66.8326334 - 933 21 7 1992 37.0000000 64.8851477 - 934 22 7 1992 33.0000000 63.5714364 - 935 23 7 1992 33.0000000 63.1829950 - 936 24 7 1992 33.0000000 61.7511613 - 937 25 7 1992 37.0000000 59.7592508 - 938 26 7 1992 26.0000000 58.0870652 - 939 27 7 1992 24.0000000 56.6600327 - 940 28 7 1992 26.0000000 55.3498960 - 941 29 7 1992 29.0000000 54.1169536 - 942 30 7 1992 19.0000000 52.9493832 - 943 31 7 1992 22.0000000 51.8989487 - 944 1 8 1992 28.0000000 51.9554717 - 945 2 8 1992 35.0000000 51.9908481 - 946 3 8 1992 29.0000000 50.3670502 - 947 4 8 1992 36.0000000 48.7299563 - 948 5 8 1992 52.0000000 47.5934075 - 949 6 8 1992 74.0000000 46.6668996 - 950 7 8 1992 54.0000000 45.8102608 - 951 8 8 1992 57.0000000 44.9917479 - 952 9 8 1992 48.0000000 44.6155199 - 953 10 8 1992 47.0000000 45.7469943 - 954 11 8 1992 46.0000000 48.1703535 - 955 12 8 1992 75.0000000 51.6171639 - 956 13 8 1992 73.0000000 54.8986363 - 957 14 8 1992 66.0000000 55.1141347 - 958 15 8 1992 60.0000000 52.5462951 - 959 16 8 1992 47.0000000 50.7612144 - 960 17 8 1992 46.0000000 46.8580018 - 961 18 8 1992 42.0000000 43.7131684 - 962 19 8 1992 41.0000000 42.1759285 - 963 20 8 1992 40.0000000 43.3511446 - 964 21 8 1992 37.0000000 46.4007440 - 965 22 8 1992 32.0000000 44.4476295 - 966 23 8 1992 32.0000000 41.9108136 - 967 24 8 1992 32.0000000 40.5326152 - 968 25 8 1992 36.0000000 39.4592339 - 969 26 8 1992 27.0000000 38.4469760 - 970 27 8 1992 25.0000000 37.5922039 - 971 28 8 1992 25.0000000 37.2212107 - 972 29 8 1992 28.0000000 37.6617125 - 973 30 8 1992 20.0000000 45.4478818 - 974 31 8 1992 22.0000000 61.1550669 - 975 1 9 1992 49.0000000 81.0624723 - 976 2 9 1992 77.0000000 89.1708805 - 977 3 9 1992 67.0000000 79.7632490 - 978 4 9 1992 45.0000000 68.9676715 - 979 5 9 1992 44.0000000 66.7092807 - 980 6 9 1992 64.0000000 63.9754972 - 981 7 9 1992 52.0000000 58.7141819 - 982 8 9 1992 40.0000000 54.2744435 - 983 9 9 1992 30.0000000 51.4573736 - 984 10 9 1992 34.0000000 49.3599712 - 985 11 9 1992 32.0000000 47.5651190 - 986 12 9 1992 36.0000000 46.0667681 - 987 13 9 1992 28.0000000 44.8385740 - 988 14 9 1992 33.0000000 44.1967559 - 989 15 9 1992 35.0000000 43.8734123 - 990 16 9 1992 30.0000000 43.1938297 - 991 17 9 1992 32.0000000 41.7254622 - 992 18 9 1992 29.0000000 40.1783380 - 993 19 9 1992 30.0000000 39.0113944 - 994 20 9 1992 28.0000000 38.1856621 - 995 21 9 1992 29.0000000 37.2839377 - 996 22 9 1992 29.0000000 36.3081107 - 997 23 9 1992 27.0000000 35.4222927 - 998 24 9 1992 27.0000000 34.6187704 - 999 25 9 1992 23.0000000 33.8665032 - 1000 26 9 1992 28.0000000 33.1514053 - 1001 27 9 1992 25.0000000 32.4707785 - 1002 28 9 1992 25.0000000 31.8489212 - 1003 29 9 1992 27.0000000 32.0578135 - 1004 30 9 1992 25.0000000 33.2045057 - 1005 1 10 1992 27.0000000 32.3875493 - 1006 2 10 1992 33.0000000 31.0814831 - 1007 3 10 1992 29.0000000 31.2227510 - 1008 4 10 1992 31.0000000 32.6667347 - 1009 5 10 1992 25.0000000 35.6016692 - 1010 6 10 1992 25.0000000 43.0497531 - 1011 7 10 1992 36.0000000 45.1435698 - 1012 8 10 1992 42.0000000 39.4591520 - 1013 9 10 1992 43.0000000 34.6355953 - 1014 10 10 1992 26.0000000 33.4366674 - 1015 11 10 1992 27.0000000 36.3303513 - 1016 12 10 1992 27.0000000 37.8564369 - 1017 13 10 1992 26.0000000 35.5029091 - 1018 14 10 1992 26.0000000 33.2497877 - 1019 15 10 1992 23.0000000 35.7185187 - 1020 16 10 1992 21.0000000 39.9933764 - 1021 17 10 1992 26.0000000 40.0146192 - 1022 18 10 1992 34.0000000 38.7421281 - 1023 19 10 1992 37.0000000 38.9947195 - 1024 20 10 1992 31.0000000 42.2652638 - 1025 21 10 1992 31.0000000 44.0004824 - 1026 22 10 1992 35.0000000 42.1689466 - 1027 23 10 1992 33.0000000 47.1974845 - 1028 24 10 1992 40.0000000 76.3770352 - 1029 25 10 1992 74.0000000 118.3425171 - 1030 26 10 1992 161.0000000 143.9984454 - 1031 27 10 1992 285.0000000 166.2206776 - 1032 28 10 1992 244.0000000 190.6425863 - 1033 29 10 1992 263.0000000 203.8328601 - 1034 30 10 1992 276.0000000 214.2176658 - 1035 31 10 1992 186.0000000 206.5385804 - 1036 1 11 1992 154.0000000 186.7159814 - 1037 2 11 1992 112.0000000 172.3451698 - 1038 3 11 1992 104.0000000 163.4555031 - 1039 4 11 1992 96.0000000 154.5597791 - 1040 5 11 1992 99.0000000 149.2850449 - 1041 6 11 1992 126.0000000 140.4661580 - 1042 7 11 1992 91.0000000 128.3275962 - 1043 8 11 1992 84.0000000 117.2448488 - 1044 9 11 1992 81.0000000 111.8343445 - 1045 10 11 1992 85.0000000 117.5117226 - 1046 11 11 1992 126.0000000 146.3440709 - 1047 12 11 1992 279.0000000 192.3000831 - 1048 13 11 1992 390.0000000 233.6875250 - 1049 14 11 1992 294.0000000 266.2146216 - 1050 15 11 1992 260.0000000 300.1845444 - 1051 16 11 1992 398.0000000 360.9379785 - 1052 17 11 1992 520.0000000 442.6424317 - 1053 18 11 1992 487.0000000 488.5813341 - 1054 19 11 1992 380.0000000 500.0887332 - 1055 20 11 1992 385.0000000 483.3594312 - 1056 21 11 1992 351.0000000 458.6160403 - 1057 22 11 1992 309.0000000 463.9907020 - 1058 23 11 1992 587.0000000 477.1372814 - 1059 24 11 1992 661.0000000 463.9991084 - 1060 25 11 1992 447.0000000 431.7545927 - 1061 26 11 1992 361.0000000 406.0746405 - 1062 27 11 1992 351.0000000 396.2525144 - 1063 28 11 1992 353.0000000 405.7255802 - 1064 29 11 1992 369.0000000 429.5606931 - 1065 30 11 1992 452.0000000 463.5426853 - 1066 1 12 1992 441.0000000 472.6608033 - 1067 2 12 1992 348.0000000 469.7395922 - 1068 3 12 1992 394.0000000 472.8005219 - 1069 4 12 1992 455.0000000 490.7173045 - 1070 5 12 1992 491.0000000 517.9986737 - 1071 6 12 1992 469.0000000 528.7639339 - 1072 7 12 1992 364.0000000 521.2418132 - 1073 8 12 1992 338.0000000 489.7066023 - 1074 9 12 1992 334.0000000 442.4787652 - 1075 10 12 1992 268.0000000 388.3220711 - 1076 11 12 1992 236.0000000 347.9001409 - 1077 12 12 1992 230.0000000 327.2096176 - 1078 13 12 1992 239.0000000 310.2971794 - 1079 14 12 1992 256.0000000 289.4444352 - 1080 15 12 1992 217.0000000 260.7502023 - 1081 16 12 1992 201.0000000 233.8881452 - 1082 17 12 1992 188.0000000 214.3987545 - 1083 18 12 1992 176.0000000 201.6662010 - 1084 19 12 1992 170.0000000 193.6716258 - 1085 20 12 1992 168.0000000 187.1125924 - 1086 21 12 1992 131.0000000 181.4346067 - 1087 22 12 1992 133.0000000 180.4236475 - 1088 23 12 1992 134.0000000 178.3346210 - 1089 24 12 1992 127.0000000 171.4701429 - 1090 25 12 1992 117.0000000 163.4976026 - 1091 26 12 1992 113.0000000 155.9832187 - 1092 27 12 1992 100.0000000 149.2045217 - 1093 28 12 1992 94.0000000 143.0753381 - 1094 29 12 1992 87.0000000 137.5031421 - 1095 30 12 1992 86.0000000 132.4164184 - 1096 31 12 1992 81.0000000 127.7561137 - 1097 1 1 1993 77.0000000 123.4717523 - 1098 2 1 1993 76.0000000 119.5197942 - 1099 3 1 1993 61.0000000 115.8625523 - 1100 4 1 1993 61.0000000 112.4673197 - 1101 5 1 1993 57.0000000 109.3056418 - 1102 6 1 1993 66.0000000 113.1173584 - 1103 7 1 1993 67.0000000 124.0445330 - 1104 8 1 1993 84.0000000 132.9361436 - 1105 9 1 1993 90.0000000 142.6076791 - 1106 10 1 1993 113.0000000 170.6661778 - 1107 11 1 1993 265.0000000 260.4958230 - 1108 12 1 1993 559.0000000 391.2058179 - 1109 13 1 1993 832.0000000 489.3813827 - 1110 14 1 1993 601.0000000 522.8662541 - 1111 15 1 1993 436.0000000 491.8952639 - 1112 16 1 1993 339.0000000 429.3018209 - 1113 17 1 1993 292.0000000 365.3260884 - 1114 18 1 1993 247.0000000 312.6851691 - 1115 19 1 1993 218.0000000 271.7221163 - 1116 20 1 1993 205.0000000 240.9774943 - 1117 21 1 1993 190.0000000 220.7326406 - 1118 22 1 1993 176.0000000 207.9442196 - 1119 23 1 1993 173.0000000 197.5513900 - 1120 24 1 1993 173.0000000 198.7722540 - 1121 25 1 1993 199.0000000 226.1377989 - 1122 26 1 1993 361.0000000 270.3431196 - 1123 27 1 1993 295.0000000 296.2340926 - 1124 28 1 1993 238.0000000 303.5730071 - 1125 29 1 1993 263.0000000 307.4754332 - 1126 30 1 1993 245.0000000 301.7120660 - 1127 31 1 1993 222.0000000 282.9666432 - 1128 1 2 1993 199.0000000 256.2423707 - 1129 2 2 1993 186.0000000 229.6500412 - 1130 3 2 1993 171.0000000 207.4374110 - 1131 4 2 1993 157.0000000 189.6718276 - 1132 5 2 1993 159.0000000 175.7091223 - 1133 6 2 1993 129.0000000 165.1812909 - 1134 7 2 1993 119.0000000 157.2165389 - 1135 8 2 1993 119.0000000 150.4853828 - 1136 9 2 1993 105.0000000 144.4845799 - 1137 10 2 1993 106.0000000 139.0377794 - 1138 11 2 1993 105.0000000 134.0587955 - 1139 12 2 1993 95.0000000 129.4888740 - 1140 13 2 1993 91.0000000 125.2798745 - 1141 14 2 1993 88.0000000 121.3905089 - 1142 15 2 1993 84.0000000 117.7850127 - 1143 16 2 1993 83.0000000 114.6077093 - 1144 17 2 1993 79.0000000 112.2126377 - 1145 18 2 1993 78.0000000 110.9534933 - 1146 19 2 1993 84.0000000 110.9613487 - 1147 20 2 1993 91.0000000 114.0089917 - 1148 21 2 1993 91.0000000 121.3604663 - 1149 22 2 1993 90.0000000 125.3219694 - 1150 23 2 1993 103.0000000 125.7754215 - 1151 24 2 1993 94.0000000 122.5252670 - 1152 25 2 1993 81.0000000 118.1146877 - 1153 26 2 1993 78.0000000 114.0565328 - 1154 27 2 1993 75.0000000 111.6100308 - 1155 28 2 1993 76.0000000 109.9375797 - 1156 1 3 1993 80.0000000 108.1836777 - 1157 2 3 1993 75.0000000 106.1450428 - 1158 3 3 1993 76.0000000 103.6004728 - 1159 4 3 1993 72.0000000 101.2669527 - 1160 5 3 1993 65.0000000 98.7937779 - 1161 6 3 1993 64.0000000 96.1755349 - 1162 7 3 1993 64.0000000 93.6221805 - 1163 8 3 1993 68.0000000 91.3779132 - 1164 9 3 1993 68.0000000 89.7327385 - 1165 10 3 1993 67.0000000 88.1003502 - 1166 11 3 1993 61.0000000 86.6884077 - 1167 12 3 1993 57.0000000 86.2541559 - 1168 13 3 1993 58.0000000 86.4695487 - 1169 14 3 1993 54.0000000 86.2112412 - 1170 15 3 1993 66.0000000 84.8980929 - 1171 16 3 1993 54.0000000 83.0553305 - 1172 17 3 1993 57.0000000 81.2373111 - 1173 18 3 1993 57.0000000 79.5530894 - 1174 19 3 1993 52.0000000 77.9714575 - 1175 20 3 1993 57.0000000 76.4656559 - 1176 21 3 1993 58.0000000 75.0809554 - 1177 22 3 1993 57.0000000 76.4711921 - 1178 23 3 1993 56.0000000 83.6385708 - 1179 24 3 1993 63.0000000 88.7348394 - 1180 25 3 1993 76.0000000 87.5158584 - 1181 26 3 1993 56.0000000 84.1488914 - 1182 27 3 1993 59.0000000 81.4905806 - 1183 28 3 1993 59.0000000 79.3563691 - 1184 29 3 1993 54.0000000 77.4320485 - 1185 30 3 1993 48.0000000 75.6287102 - 1186 31 3 1993 55.0000000 73.9243099 - 1187 1 4 1993 48.0000000 72.4015821 - 1188 2 4 1993 53.0000000 71.6580085 - 1189 3 4 1993 47.0000000 72.4339375 - 1190 4 4 1993 59.0000000 76.3840918 - 1191 5 4 1993 53.0000000 83.4894330 - 1192 6 4 1993 64.0000000 90.3761983 - 1193 7 4 1993 63.0000000 92.3794068 - 1194 8 4 1993 75.0000000 90.3672532 - 1195 9 4 1993 64.0000000 87.4555893 - 1196 10 4 1993 59.0000000 84.6587931 - 1197 11 4 1993 60.0000000 84.8018707 - 1198 12 4 1993 63.0000000 88.0706927 - 1199 13 4 1993 69.0000000 88.6426521 - 1200 14 4 1993 79.0000000 87.8897691 - 1201 15 4 1993 82.0000000 86.8324753 - 1202 16 4 1993 68.0000000 84.6542893 - 1203 17 4 1993 56.0000000 82.2526988 - 1204 18 4 1993 59.0000000 80.0430873 - 1205 19 4 1993 61.0000000 77.8726910 - 1206 20 4 1993 62.0000000 75.7493725 - 1207 21 4 1993 57.0000000 73.7168315 - 1208 22 4 1993 53.0000000 71.7911140 - 1209 23 4 1993 47.0000000 69.9795511 - 1210 24 4 1993 46.0000000 68.2725562 - 1211 25 4 1993 47.0000000 66.6613149 - 1212 26 4 1993 45.0000000 65.1383968 - 1213 27 4 1993 43.0000000 63.6961422 - 1214 28 4 1993 41.0000000 62.3274003 - 1215 29 4 1993 38.0000000 61.0268765 - 1216 30 4 1993 39.0000000 59.9395318 - 1217 1 5 1993 40.0000000 59.0498879 - 1218 2 5 1993 41.0000000 58.0355732 - 1219 3 5 1993 45.0000000 57.5629742 - 1220 4 5 1993 49.0000000 57.3910611 - 1221 5 5 1993 40.0000000 56.4125141 - 1222 6 5 1993 43.0000000 55.1153011 - 1223 7 5 1993 38.0000000 54.3445439 - 1224 8 5 1993 38.0000000 53.8932571 - 1225 9 5 1993 43.0000000 53.0066152 - 1226 10 5 1993 44.0000000 51.8997272 - 1227 11 5 1993 41.0000000 52.1387513 - 1228 12 5 1993 51.0000000 55.6368514 - 1229 13 5 1993 63.0000000 74.3109270 - 1230 14 5 1993 68.0000000 80.7029365 - 1231 15 5 1993 77.0000000 68.8093429 - 1232 16 5 1993 77.0000000 62.0729602 - 1233 17 5 1993 59.0000000 58.5130518 - 1234 18 5 1993 49.0000000 56.4065175 - 1235 19 5 1993 43.0000000 57.9004721 - 1236 20 5 1993 44.0000000 59.5191386 - 1237 21 5 1993 48.0000000 60.4494859 - 1238 22 5 1993 44.0000000 62.3264824 - 1239 23 5 1993 46.0000000 59.6038097 - 1240 24 5 1993 40.0000000 55.9210670 - 1241 25 5 1993 43.0000000 53.6652622 - 1242 26 5 1993 30.0000000 52.4471519 - 1243 27 5 1993 45.0000000 53.1664929 - 1244 28 5 1993 43.0000000 57.6404213 - 1245 29 5 1993 44.0000000 60.4477935 - 1246 30 5 1993 54.0000000 60.6020656 - 1247 31 5 1993 56.0000000 60.5057147 - 1248 1 6 1993 44.0000000 57.3716412 - 1249 2 6 1993 43.0000000 54.9237878 - 1250 3 6 1993 33.0000000 53.9032004 - 1251 4 6 1993 45.0000000 54.7538633 - 1252 5 6 1993 46.0000000 54.4952559 - 1253 6 6 1993 42.0000000 52.3337559 - 1254 7 6 1993 40.0000000 50.1986163 - 1255 8 6 1993 30.0000000 48.6558116 - 1256 9 6 1993 31.0000000 47.4028144 - 1257 10 6 1993 32.0000000 46.3265159 - 1258 11 6 1993 25.0000000 45.4536363 - 1259 12 6 1993 33.0000000 44.9951152 - 1260 13 6 1993 29.0000000 45.3687572 - 1261 14 6 1993 40.0000000 45.6700878 - 1262 15 6 1993 42.0000000 46.2534834 - 1263 16 6 1993 37.0000000 46.3118546 - 1264 17 6 1993 46.0000000 45.7863489 - 1265 18 6 1993 47.0000000 44.9314241 - 1266 19 6 1993 50.0000000 43.5592761 - 1267 20 6 1993 43.0000000 47.7554017 - 1268 21 6 1993 69.0000000 60.2246087 - 1269 22 6 1993 61.0000000 61.6437066 - 1270 23 6 1993 67.0000000 64.1525988 - 1271 24 6 1993 77.0000000 71.2331844 - 1272 25 6 1993 87.0000000 68.0061984 - 1273 26 6 1993 55.0000000 61.9370794 - 1274 27 6 1993 43.0000000 58.1823023 - 1275 28 6 1993 40.0000000 55.8262883 - 1276 29 6 1993 30.0000000 53.9322020 - 1277 30 6 1993 40.0000000 52.2270596 - 1278 1 7 1993 40.0000000 50.6914042 - 1279 2 7 1993 27.0000000 50.2176530 - 1280 3 7 1993 34.0000000 50.3299127 - 1281 4 7 1993 30.0000000 48.6895160 - 1282 5 7 1993 31.0000000 46.9623530 - 1283 6 7 1993 27.0000000 45.4538101 - 1284 7 7 1993 31.0000000 44.2659542 - 1285 8 7 1993 26.0000000 43.1750609 - 1286 9 7 1993 23.0000000 42.1598492 - 1287 10 7 1993 24.0000000 41.5128173 - 1288 11 7 1993 25.0000000 41.5568984 - 1289 12 7 1993 34.0000000 43.8128785 - 1290 13 7 1993 40.0000000 51.1169570 - 1291 14 7 1993 41.0000000 63.0181105 - 1292 15 7 1993 46.0000000 66.6210686 - 1293 16 7 1993 39.0000000 58.5238240 - 1294 17 7 1993 43.0000000 51.9376844 - 1295 18 7 1993 35.0000000 48.2412887 - 1296 19 7 1993 49.0000000 54.0918808 - 1297 20 7 1993 38.0000000 61.5658654 - 1298 21 7 1993 41.0000000 59.5565381 - 1299 22 7 1993 45.0000000 57.9611088 - 1300 23 7 1993 41.0000000 56.5855340 - 1301 24 7 1993 42.0000000 52.8339265 - 1302 25 7 1993 40.0000000 49.6160048 - 1303 26 7 1993 35.0000000 47.6431996 - 1304 27 7 1993 40.0000000 56.7775639 - 1305 28 7 1993 40.0000000 64.6052735 - 1306 29 7 1993 36.0000000 55.7565854 - 1307 30 7 1993 40.0000000 64.5083219 - 1308 31 7 1993 61.0000000 84.7069751 - 1309 1 8 1993 36.0000000 80.7022473 - 1310 2 8 1993 46.0000000 69.0712692 - 1311 3 8 1993 32.0000000 61.4399413 - 1312 4 8 1993 38.0000000 57.5119616 - 1313 5 8 1993 32.0000000 54.8960147 - 1314 6 8 1993 25.0000000 52.6924851 - 1315 7 8 1993 26.0000000 50.7072034 - 1316 8 8 1993 29.0000000 48.8905941 - 1317 9 8 1993 29.0000000 49.1647454 - 1318 10 8 1993 28.0000000 52.8040831 - 1319 11 8 1993 37.0000000 52.1885921 - 1320 12 8 1993 40.0000000 50.2269804 - 1321 13 8 1993 49.0000000 47.5924957 - 1322 14 8 1993 32.0000000 45.5781913 - 1323 15 8 1993 37.0000000 44.7736525 - 1324 16 8 1993 37.0000000 43.3680652 - 1325 17 8 1993 27.0000000 41.7063314 - 1326 18 8 1993 24.0000000 40.4461033 - 1327 19 8 1993 24.0000000 39.3463581 - 1328 20 8 1993 22.0000000 38.3254897 - 1329 21 8 1993 21.0000000 37.3678105 - 1330 22 8 1993 16.0000000 36.4738958 - 1331 23 8 1993 21.0000000 36.2510710 - 1332 24 8 1993 27.0000000 38.1851097 - 1333 25 8 1993 26.0000000 38.0497947 - 1334 26 8 1993 23.0000000 35.8718979 - 1335 27 8 1993 21.0000000 34.3064111 - 1336 28 8 1993 28.0000000 34.5821749 - 1337 29 8 1993 17.0000000 36.3997121 - 1338 30 8 1993 24.0000000 35.2881819 - 1339 31 8 1993 25.0000000 33.2762404 - 1340 1 9 1993 25.0000000 32.1073875 - 1341 2 9 1993 19.0000000 31.3733456 - 1342 3 9 1993 17.0000000 30.8065094 - 1343 4 9 1993 16.0000000 31.7132209 - 1344 5 9 1993 19.0000000 34.5604536 - 1345 6 9 1993 23.0000000 33.9852604 - 1346 7 9 1993 25.0000000 39.2326762 - 1347 8 9 1993 34.0000000 47.0062540 - 1348 9 9 1993 31.0000000 43.4117559 - 1349 10 9 1993 35.0000000 59.6013385 - 1350 11 9 1993 53.0000000 82.0037198 - 1351 12 9 1993 71.0000000 103.5007064 - 1352 13 9 1993 74.0000000 117.0556327 - 1353 14 9 1993 87.0000000 137.6451984 - 1354 15 9 1993 173.0000000 157.8025229 - 1355 16 9 1993 117.0000000 151.7074360 - 1356 17 9 1993 93.0000000 131.2445437 - 1357 18 9 1993 77.0000000 117.6368074 - 1358 19 9 1993 62.0000000 107.3663605 - 1359 20 9 1993 54.0000000 99.0986939 - 1360 21 9 1993 48.0000000 93.8056991 - 1361 22 9 1993 46.0000000 95.9200544 - 1362 23 9 1993 55.0000000 105.9737626 - 1363 24 9 1993 66.0000000 115.1537801 - 1364 25 9 1993 64.0000000 117.7130834 - 1365 26 9 1993 52.0000000 113.7814124 - 1366 27 9 1993 68.0000000 106.8748346 - 1367 28 9 1993 69.0000000 99.9083000 - 1368 29 9 1993 62.0000000 98.1651081 - 1369 30 9 1993 76.0000000 98.3908497 - 1370 1 10 1993 72.0000000 100.8949343 - 1371 2 10 1993 68.0000000 108.0030960 - 1372 3 10 1993 72.0000000 111.4957241 - 1373 4 10 1993 78.0000000 115.9975269 - 1374 5 10 1993 116.0000000 143.9379015 - 1375 6 10 1993 131.0000000 173.0876420 - 1376 7 10 1993 180.0000000 183.3893696 - 1377 8 10 1993 203.0000000 185.5054324 - 1378 9 10 1993 164.0000000 185.1152941 - 1379 10 10 1993 178.0000000 193.4027151 - 1380 11 10 1993 161.0000000 213.3183776 - 1381 12 10 1993 287.0000000 232.9931532 - 1382 13 10 1993 360.0000000 261.1987118 - 1383 14 10 1993 374.0000000 301.7536912 - 1384 15 10 1993 297.0000000 320.5040116 - 1385 16 10 1993 247.0000000 311.5069214 - 1386 17 10 1993 273.0000000 301.9933491 - 1387 18 10 1993 261.0000000 296.3124642 - 1388 19 10 1993 265.0000000 282.8506645 - 1389 20 10 1993 230.0000000 259.7747030 - 1390 21 10 1993 199.0000000 233.0399359 - 1391 22 10 1993 173.0000000 207.2159372 - 1392 23 10 1993 182.0000000 192.9541561 - 1393 24 10 1993 203.0000000 196.2995732 - 1394 25 10 1993 213.0000000 198.5344621 - 1395 26 10 1993 180.0000000 190.3150146 - 1396 27 10 1993 154.0000000 174.0320658 - 1397 28 10 1993 118.0000000 157.3475702 - 1398 29 10 1993 112.0000000 144.1255743 - 1399 30 10 1993 98.0000000 134.4742925 - 1400 31 10 1993 97.0000000 126.9708513 - 1401 1 11 1993 91.0000000 120.5647253 - 1402 2 11 1993 85.0000000 114.8582221 - 1403 3 11 1993 75.0000000 109.7099538 - 1404 4 11 1993 76.0000000 105.0420403 - 1405 5 11 1993 78.0000000 100.7943724 - 1406 6 11 1993 72.0000000 96.9358987 - 1407 7 11 1993 76.0000000 94.8950002 - 1408 8 11 1993 69.0000000 92.6091359 - 1409 9 11 1993 66.0000000 89.5757893 - 1410 10 11 1993 71.0000000 87.9154712 - 1411 11 11 1993 64.0000000 88.0727236 - 1412 12 11 1993 67.0000000 89.9373943 - 1413 13 11 1993 80.0000000 98.2302395 - 1414 14 11 1993 78.0000000 109.4611897 - 1415 15 11 1993 80.0000000 120.6832107 - 1416 16 11 1993 86.0000000 124.0827419 - 1417 17 11 1993 125.0000000 123.8045228 - 1418 18 11 1993 96.0000000 119.0586388 - 1419 19 11 1993 82.0000000 113.0755873 - 1420 20 11 1993 77.0000000 107.7610151 - 1421 21 11 1993 67.0000000 103.0866667 - 1422 22 11 1993 71.0000000 98.8703636 - 1423 23 11 1993 61.0000000 95.0277934 - 1424 24 11 1993 42.0000000 91.5102643 - 1425 25 11 1993 63.0000000 88.2821401 - 1426 26 11 1993 57.0000000 85.4702746 - 1427 27 11 1993 58.0000000 83.3250446 - 1428 28 11 1993 49.0000000 81.1498292 - 1429 29 11 1993 50.0000000 78.7988144 - 1430 30 11 1993 55.0000000 76.5414180 - 1431 1 12 1993 54.0000000 74.4337653 - 1432 2 12 1993 54.0000000 74.7759450 - 1433 3 12 1993 50.0000000 76.2044745 - 1434 4 12 1993 51.0000000 76.4356805 - 1435 5 12 1993 62.0000000 76.0715589 - 1436 6 12 1993 62.0000000 74.0274121 - 1437 7 12 1993 71.0000000 83.5604143 - 1438 8 12 1993 79.0000000 110.9428926 - 1439 9 12 1993 153.0000000 138.8263280 - 1440 10 12 1993 291.0000000 178.4731261 - 1441 11 12 1993 332.0000000 230.2493070 - 1442 12 12 1993 465.0000000 302.4886506 - 1443 13 12 1993 518.0000000 382.3969767 - 1444 14 12 1993 539.0000000 425.9237098 - 1445 15 12 1993 559.0000000 455.5013048 - 1446 16 12 1993 500.0000000 492.1016024 - 1447 17 12 1993 526.0000000 532.7678157 - 1448 18 12 1993 583.0000000 564.2345264 - 1449 19 12 1993 677.0000000 609.1144172 - 1450 20 12 1993 781.0000000 738.9064937 - 1451 21 12 1993 1180.0000000 905.3802614 - 1452 22 12 1993 1460.0000000 1027.4601170 - 1453 23 12 1993 1600.0000000 1096.1121857 - 1454 24 12 1993 1410.0000000 1117.6065547 - 1455 25 12 1993 1230.0000000 1101.6191380 - 1456 26 12 1993 1070.0000000 1018.2596156 - 1457 27 12 1993 746.0000000 883.1182421 - 1458 28 12 1993 542.0000000 746.6436772 - 1459 29 12 1993 492.0000000 650.0752553 - 1460 30 12 1993 491.0000000 615.5381200 - 1461 31 12 1993 617.0000000 642.2183326 diff --git a/check/case_mrm_01/output_save/b1_discharge.nc b/check/case_mrm_01/output_save/b1_discharge.nc deleted file mode 100644 index e510d09d32091b2ae931d11726e895cf7558c897..0000000000000000000000000000000000000000 Binary files a/check/case_mrm_01/output_save/b1_discharge.nc and /dev/null differ diff --git a/check/case_mrm_01/output_save/b1_mRM_Fluxes_States.nc b/check/case_mrm_01/output_save/b1_mRM_Fluxes_States.nc deleted file mode 100644 index ce96c8b32e56272b68363f40f1eb2115365b4d23..0000000000000000000000000000000000000000 Binary files a/check/case_mrm_01/output_save/b1_mRM_Fluxes_States.nc and /dev/null differ diff --git a/check/case_mrm_01/output_save/b1_mRM_restart_001.nc b/check/case_mrm_01/output_save/b1_mRM_restart_001.nc deleted file mode 100644 index b040ddcb5593176bb51e4d58db2ea1e2ff3d4248..0000000000000000000000000000000000000000 Binary files a/check/case_mrm_01/output_save/b1_mRM_restart_001.nc and /dev/null differ diff --git a/check/case_mrm_01/output_save/b2_daily_discharge.out b/check/case_mrm_01/output_save/b2_daily_discharge.out deleted file mode 100644 index 9bcf54fc50bfd4f58d4327e9265c9fde75c4bfba..0000000000000000000000000000000000000000 --- a/check/case_mrm_01/output_save/b2_daily_discharge.out +++ /dev/null @@ -1,366 +0,0 @@ - No Day Mon Year Qobs_0000000045 Qsim_0000000045 - 1 1 1 1993 -9999.0000000 37.8610722 - 2 2 1 1993 -9999.0000000 76.0589517 - 3 3 1 1993 -9999.0000000 80.2926095 - 4 4 1 1993 -9999.0000000 78.1644103 - 5 5 1 1993 -9999.0000000 75.3931088 - 6 6 1 1993 -9999.0000000 72.6571884 - 7 7 1 1993 -9999.0000000 70.1187009 - 8 8 1 1993 -9999.0000000 68.7483315 - 9 9 1 1993 -9999.0000000 67.7670865 - 10 10 1 1993 -9999.0000000 66.5954203 - 11 11 1 1993 -9999.0000000 73.1663727 - 12 12 1 1993 -9999.0000000 85.9606744 - 13 13 1 1993 -9999.0000000 97.9705247 - 14 14 1 1993 -9999.0000000 109.6349901 - 15 15 1 1993 -9999.0000000 115.7668360 - 16 16 1 1993 -9999.0000000 115.9198247 - 17 17 1 1993 -9999.0000000 115.3056813 - 18 18 1 1993 -9999.0000000 112.9829385 - 19 19 1 1993 -9999.0000000 106.4448310 - 20 20 1 1993 -9999.0000000 100.2547648 - 21 21 1 1993 -9999.0000000 96.4971025 - 22 22 1 1993 -9999.0000000 95.3996605 - 23 23 1 1993 -9999.0000000 93.3692744 - 24 24 1 1993 -9999.0000000 89.6873069 - 25 25 1 1993 -9999.0000000 86.2507723 - 26 26 1 1993 -9999.0000000 83.0423078 - 27 27 1 1993 -9999.0000000 79.6479579 - 28 28 1 1993 -9999.0000000 76.0871781 - 29 29 1 1993 -9999.0000000 72.5938520 - 30 30 1 1993 -9999.0000000 69.3819296 - 31 31 1 1993 -9999.0000000 66.4324369 - 32 1 2 1993 -9999.0000000 63.6766614 - 33 2 2 1993 -9999.0000000 61.1022742 - 34 3 2 1993 -9999.0000000 58.7022093 - 35 4 2 1993 -9999.0000000 56.4849168 - 36 5 2 1993 -9999.0000000 54.4010573 - 37 6 2 1993 -9999.0000000 52.4117353 - 38 7 2 1993 -9999.0000000 50.5083517 - 39 8 2 1993 -9999.0000000 48.6986811 - 40 9 2 1993 -9999.0000000 46.9837559 - 41 10 2 1993 -9999.0000000 45.3595689 - 42 11 2 1993 -9999.0000000 43.8206410 - 43 12 2 1993 -9999.0000000 42.3613871 - 44 13 2 1993 -9999.0000000 40.9764978 - 45 14 2 1993 -9999.0000000 39.6610206 - 46 15 2 1993 -9999.0000000 38.4103607 - 47 16 2 1993 -9999.0000000 37.2202624 - 48 17 2 1993 -9999.0000000 36.0867863 - 49 18 2 1993 -9999.0000000 35.0062865 - 50 19 2 1993 -9999.0000000 33.9820134 - 51 20 2 1993 -9999.0000000 33.0158730 - 52 21 2 1993 -9999.0000000 32.0815568 - 53 22 2 1993 -9999.0000000 31.1812372 - 54 23 2 1993 -9999.0000000 30.3183060 - 55 24 2 1993 -9999.0000000 29.4914858 - 56 25 2 1993 -9999.0000000 28.6987433 - 57 26 2 1993 -9999.0000000 27.9381074 - 58 27 2 1993 -9999.0000000 27.3506704 - 59 28 2 1993 -9999.0000000 27.3661953 - 60 1 3 1993 50.5000000 26.9997241 - 61 2 3 1993 48.5000000 26.4171942 - 62 3 3 1993 46.6000000 26.0156951 - 63 4 3 1993 46.6000000 25.4418757 - 64 5 3 1993 48.5000000 24.8029583 - 65 6 3 1993 47.5000000 24.1781982 - 66 7 3 1993 68.8000000 23.6432480 - 67 8 3 1993 52.6000000 23.2515160 - 68 9 3 1993 39.8000000 22.9696347 - 69 10 3 1993 43.8000000 22.8871094 - 70 11 3 1993 42.2000000 22.7082514 - 71 12 3 1993 42.2000000 22.4519046 - 72 13 3 1993 38.3000000 22.1936857 - 73 14 3 1993 42.2000000 21.9908091 - 74 15 3 1993 44.7000000 21.8083163 - 75 16 3 1993 44.7000000 21.5372168 - 76 17 3 1993 43.8000000 21.1171934 - 77 18 3 1993 44.7000000 20.6113244 - 78 19 3 1993 44.7000000 20.0859729 - 79 20 3 1993 43.0000000 19.5688038 - 80 21 3 1993 41.3000000 19.0678158 - 81 22 3 1993 41.3000000 18.5845938 - 82 23 3 1993 41.3000000 24.1715110 - 83 24 3 1993 44.7000000 48.8034293 - 84 25 3 1993 70.0000000 65.7025242 - 85 26 3 1993 106.0000000 62.7080133 - 86 27 3 1993 88.2000000 59.9375721 - 87 28 3 1993 82.9000000 57.6289391 - 88 29 3 1993 63.8000000 55.1879193 - 89 30 3 1993 54.9000000 52.6657717 - 90 31 3 1993 52.6000000 50.2273141 - 91 1 4 1993 50.5000000 48.6835652 - 92 2 4 1993 50.5000000 49.0594133 - 93 3 4 1993 53.7000000 49.5906170 - 94 4 4 1993 60.1000000 49.2260713 - 95 5 4 1993 56.0000000 48.1408943 - 96 6 4 1993 56.0000000 46.9278917 - 97 7 4 1993 54.9000000 45.9977291 - 98 8 4 1993 56.5000000 45.0208972 - 99 9 4 1993 53.7000000 43.8313993 - 100 10 4 1993 51.6000000 47.6009295 - 101 11 4 1993 56.0000000 78.6809097 - 102 12 4 1993 106.0000000 109.0891178 - 103 13 4 1993 158.0000000 142.1017046 - 104 14 4 1993 222.0000000 165.7380709 - 105 15 4 1993 209.0000000 172.0327648 - 106 16 4 1993 194.0000000 162.5011094 - 107 17 4 1993 158.0000000 147.1869762 - 108 18 4 1993 126.0000000 131.3212632 - 109 19 4 1993 113.0000000 116.6402429 - 110 20 4 1993 106.0000000 104.0471126 - 111 21 4 1993 100.0000000 94.2116183 - 112 22 4 1993 98.9000000 86.5920982 - 113 23 4 1993 94.8000000 80.2991102 - 114 24 4 1993 90.8000000 74.9344974 - 115 25 4 1993 88.2000000 70.1848180 - 116 26 4 1993 82.9000000 65.9214728 - 117 27 4 1993 77.7000000 62.0923616 - 118 28 4 1993 75.1000000 58.6677189 - 119 29 4 1993 76.4000000 55.7117367 - 120 30 4 1993 75.1000000 57.7923795 - 121 1 5 1993 73.8000000 59.2091645 - 122 2 5 1993 68.8000000 55.6741010 - 123 3 5 1993 67.5000000 53.0277908 - 124 4 5 1993 66.3000000 50.9568444 - 125 5 5 1993 67.5000000 49.2919339 - 126 6 5 1993 66.3000000 47.2643752 - 127 7 5 1993 68.8000000 46.2057220 - 128 8 5 1993 63.8000000 50.4556390 - 129 9 5 1993 62.6000000 51.1976543 - 130 10 5 1993 61.3000000 48.1543544 - 131 11 5 1993 60.1000000 44.9429343 - 132 12 5 1993 65.0000000 42.7387538 - 133 13 5 1993 62.6000000 40.8772980 - 134 14 5 1993 58.9000000 39.2369298 - 135 15 5 1993 57.2000000 39.6518472 - 136 16 5 1993 56.0000000 41.8964713 - 137 17 5 1993 56.0000000 39.7531657 - 138 18 5 1993 54.9000000 38.1786648 - 139 19 5 1993 54.9000000 36.7322355 - 140 20 5 1993 56.0000000 35.2486878 - 141 21 5 1993 56.0000000 33.8727155 - 142 22 5 1993 54.9000000 32.5412266 - 143 23 5 1993 52.6000000 31.1071754 - 144 24 5 1993 51.6000000 29.8173336 - 145 25 5 1993 48.5000000 28.6269326 - 146 26 5 1993 47.5000000 27.5048527 - 147 27 5 1993 45.6000000 26.4449417 - 148 28 5 1993 45.6000000 33.7055391 - 149 29 5 1993 53.7000000 39.6088805 - 150 30 5 1993 53.7000000 30.4082978 - 151 31 5 1993 49.5000000 26.9875352 - 152 1 6 1993 51.6000000 25.8671542 - 153 2 6 1993 47.5000000 25.5458380 - 154 3 6 1993 47.5000000 44.1906507 - 155 4 6 1993 53.7000000 49.3221865 - 156 5 6 1993 51.6000000 39.7983994 - 157 6 6 1993 52.6000000 36.3131584 - 158 7 6 1993 48.5000000 35.0523999 - 159 8 6 1993 52.6000000 33.8776264 - 160 9 6 1993 50.5000000 32.3502534 - 161 10 6 1993 46.6000000 31.2314725 - 162 11 6 1993 46.6000000 32.9683456 - 163 12 6 1993 47.5000000 36.8750425 - 164 13 6 1993 45.6000000 36.6661457 - 165 14 6 1993 44.7000000 32.5130503 - 166 15 6 1993 52.6000000 30.2233163 - 167 16 6 1993 48.5000000 28.8941147 - 168 17 6 1993 51.6000000 33.8097977 - 169 18 6 1993 52.6000000 33.0535172 - 170 19 6 1993 47.5000000 30.0472502 - 171 20 6 1993 44.7000000 29.7823129 - 172 21 6 1993 45.6000000 34.1351824 - 173 22 6 1993 48.5000000 31.2976611 - 174 23 6 1993 47.5000000 40.4052547 - 175 24 6 1993 58.9000000 56.3627802 - 176 25 6 1993 62.6000000 52.2457084 - 177 26 6 1993 60.1000000 45.8291111 - 178 27 6 1993 60.1000000 43.3653182 - 179 28 6 1993 56.0000000 44.6751727 - 180 29 6 1993 57.2000000 43.6578552 - 181 30 6 1993 53.7000000 41.2158338 - 182 1 7 1993 49.5000000 39.2301954 - 183 2 7 1993 48.5000000 37.3159754 - 184 3 7 1993 54.9000000 35.4986031 - 185 4 7 1993 49.5000000 33.7836078 - 186 5 7 1993 43.8000000 32.1677081 - 187 6 7 1993 43.0000000 44.5002306 - 188 7 7 1993 44.7000000 44.0165012 - 189 8 7 1993 41.3000000 37.6481472 - 190 9 7 1993 38.3000000 35.5670232 - 191 10 7 1993 39.1000000 34.4703306 - 192 11 7 1993 37.6000000 52.2728572 - 193 12 7 1993 38.3000000 65.1865823 - 194 13 7 1993 66.3000000 50.1412622 - 195 14 7 1993 53.7000000 43.3310876 - 196 15 7 1993 44.7000000 40.2064817 - 197 16 7 1993 43.0000000 37.8435609 - 198 17 7 1993 37.6000000 35.9477119 - 199 18 7 1993 37.0000000 36.4253067 - 200 19 7 1993 37.0000000 42.9629359 - 201 20 7 1993 39.8000000 43.6976594 - 202 21 7 1993 46.6000000 45.5820277 - 203 22 7 1993 48.5000000 40.6229287 - 204 23 7 1993 45.6000000 36.7404260 - 205 24 7 1993 45.6000000 33.9100993 - 206 25 7 1993 42.2000000 31.6168991 - 207 26 7 1993 43.8000000 58.1191132 - 208 27 7 1993 73.8000000 69.4488930 - 209 28 7 1993 57.7000000 52.6723313 - 210 29 7 1993 53.7000000 46.1627173 - 211 30 7 1993 49.5000000 42.5346369 - 212 31 7 1993 43.8000000 39.4833148 - 213 1 8 1993 40.6000000 36.9495218 - 214 2 8 1993 37.6000000 34.9460791 - 215 3 8 1993 39.1000000 33.1581984 - 216 4 8 1993 37.6000000 31.4814433 - 217 5 8 1993 36.3000000 29.9033954 - 218 6 8 1993 39.1000000 31.2686339 - 219 7 8 1993 41.3000000 28.2344337 - 220 8 8 1993 39.1000000 27.0344012 - 221 9 8 1993 39.8000000 34.4882463 - 222 10 8 1993 43.0000000 31.1663542 - 223 11 8 1993 37.0000000 26.2710976 - 224 12 8 1993 37.0000000 24.5861602 - 225 13 8 1993 36.3000000 23.4305316 - 226 14 8 1993 37.6000000 22.3851521 - 227 15 8 1993 34.5000000 21.4013456 - 228 16 8 1993 35.1000000 20.4739577 - 229 17 8 1993 35.1000000 20.3431405 - 230 18 8 1993 35.7000000 20.9036805 - 231 19 8 1993 35.1000000 19.3547289 - 232 20 8 1993 35.1000000 18.2028698 - 233 21 8 1993 33.3000000 17.3347075 - 234 22 8 1993 32.8000000 16.6277679 - 235 23 8 1993 34.5000000 15.9862808 - 236 24 8 1993 33.9000000 19.0769577 - 237 25 8 1993 37.6000000 51.8772139 - 238 26 8 1993 53.7000000 66.2742044 - 239 27 8 1993 81.6000000 60.4467948 - 240 28 8 1993 76.4000000 67.0475611 - 241 29 8 1993 77.7000000 58.1700989 - 242 30 8 1993 68.8000000 52.1413156 - 243 31 8 1993 56.5000000 48.7629470 - 244 1 9 1993 52.6000000 45.6939538 - 245 2 9 1993 48.5000000 42.9878496 - 246 3 9 1993 43.8000000 52.7540405 - 247 4 9 1993 76.4000000 75.7468078 - 248 5 9 1993 131.0000000 84.2579084 - 249 6 9 1993 124.0000000 83.2935820 - 250 7 9 1993 96.2000000 79.1573510 - 251 8 9 1993 75.1000000 74.5930835 - 252 9 9 1993 62.6000000 84.7775261 - 253 10 9 1993 88.2000000 121.9121255 - 254 11 9 1993 177.0000000 148.2435971 - 255 12 9 1993 186.0000000 139.2648848 - 256 13 9 1993 140.0000000 131.9003451 - 257 14 9 1993 133.0000000 146.5733670 - 258 15 9 1993 206.0000000 164.1690082 - 259 16 9 1993 152.0000000 175.6211529 - 260 17 9 1993 142.0000000 205.4025082 - 261 18 9 1993 186.0000000 223.7866472 - 262 19 9 1993 221.0000000 208.2239637 - 263 20 9 1993 171.0000000 183.3337847 - 264 21 9 1993 139.0000000 159.3793990 - 265 22 9 1993 111.0000000 138.3287284 - 266 23 9 1993 103.0000000 120.6605995 - 267 24 9 1993 85.5000000 110.4288245 - 268 25 9 1993 79.0000000 172.3224256 - 269 26 9 1993 226.0000000 292.6436263 - 270 27 9 1993 396.0000000 337.5802324 - 271 28 9 1993 306.0000000 321.2890308 - 272 29 9 1993 263.0000000 324.9124807 - 273 30 9 1993 297.0000000 329.9173817 - 274 1 10 1993 249.0000000 334.7815607 - 275 2 10 1993 358.0000000 455.8142648 - 276 3 10 1993 667.0000000 557.0200586 - 277 4 10 1993 476.0000000 534.0502069 - 278 5 10 1993 328.0000000 465.7589528 - 279 6 10 1993 260.0000000 445.6574345 - 280 7 10 1993 419.0000000 510.3545203 - 281 8 10 1993 495.0000000 599.3930493 - 282 9 10 1993 581.0000000 658.2821857 - 283 10 10 1993 545.0000000 617.0761847 - 284 11 10 1993 396.0000000 535.2484400 - 285 12 10 1993 311.0000000 459.2823073 - 286 13 10 1993 258.0000000 403.4591134 - 287 14 10 1993 262.0000000 386.7381509 - 288 15 10 1993 304.0000000 401.2144351 - 289 16 10 1993 265.0000000 380.4825800 - 290 17 10 1993 256.0000000 342.6515698 - 291 18 10 1993 237.0000000 330.4808293 - 292 19 10 1993 244.0000000 326.8646462 - 293 20 10 1993 241.0000000 306.0777858 - 294 21 10 1993 244.0000000 475.6135346 - 295 22 10 1993 803.0000000 805.6387883 - 296 23 10 1993 1185.0000000 1037.8255571 - 297 24 10 1993 993.0000000 1107.5617187 - 298 25 10 1993 774.0000000 1034.8600900 - 299 26 10 1993 609.0000000 904.8368285 - 300 27 10 1993 493.0000000 776.1657923 - 301 28 10 1993 444.0000000 664.4783907 - 302 29 10 1993 392.0000000 570.3521902 - 303 30 10 1993 334.0000000 491.0890791 - 304 31 10 1993 306.0000000 424.2076988 - 305 1 11 1993 265.0000000 367.3493002 - 306 2 11 1993 263.0000000 319.6879823 - 307 3 11 1993 248.0000000 281.8650272 - 308 4 11 1993 239.0000000 250.0613057 - 309 5 11 1993 219.0000000 291.5550447 - 310 6 11 1993 302.0000000 369.6754038 - 311 7 11 1993 330.0000000 423.1172507 - 312 8 11 1993 358.0000000 441.5943471 - 313 9 11 1993 396.0000000 423.5156340 - 314 10 11 1993 339.0000000 380.8504298 - 315 11 11 1993 286.0000000 359.9027036 - 316 12 11 1993 286.0000000 392.8655141 - 317 13 11 1993 274.0000000 407.8778352 - 318 14 11 1993 281.0000000 385.9688859 - 319 15 11 1993 293.0000000 359.4396521 - 320 16 11 1993 322.0000000 333.6485050 - 321 17 11 1993 304.0000000 301.8248596 - 322 18 11 1993 276.0000000 267.2479742 - 323 19 11 1993 248.0000000 235.4181024 - 324 20 11 1993 234.0000000 208.3486186 - 325 21 11 1993 219.0000000 186.1713957 - 326 22 11 1993 216.0000000 167.8725845 - 327 23 11 1993 209.0000000 152.6715346 - 328 24 11 1993 178.0000000 140.5745960 - 329 25 11 1993 188.0000000 130.9617476 - 330 26 11 1993 183.0000000 123.2752665 - 331 27 11 1993 171.0000000 116.8807948 - 332 28 11 1993 169.0000000 111.2371488 - 333 29 11 1993 164.0000000 106.0745682 - 334 30 11 1993 142.0000000 101.2865544 - 335 1 12 1993 130.0000000 96.8232991 - 336 2 12 1993 134.0000000 92.6528536 - 337 3 12 1993 126.0000000 88.7968990 - 338 4 12 1993 114.0000000 86.6641406 - 339 5 12 1993 116.0000000 87.6339827 - 340 6 12 1993 114.0000000 86.2230354 - 341 7 12 1993 124.0000000 84.2540252 - 342 8 12 1993 121.0000000 83.5408056 - 343 9 12 1993 124.0000000 92.3153372 - 344 10 12 1993 172.0000000 103.2465126 - 345 11 12 1993 174.0000000 142.4202855 - 346 12 12 1993 188.0000000 165.2563313 - 347 13 12 1993 174.0000000 191.3295566 - 348 14 12 1993 178.0000000 321.0539677 - 349 15 12 1993 565.0000000 467.7016810 - 350 16 12 1993 506.0000000 528.5478333 - 351 17 12 1993 424.0000000 511.1616186 - 352 18 12 1993 343.0000000 458.5148179 - 353 19 12 1993 286.0000000 401.3277192 - 354 20 12 1993 258.0000000 355.8355084 - 355 21 12 1993 237.0000000 353.2259677 - 356 22 12 1993 246.0000000 361.0684614 - 357 23 12 1993 239.0000000 330.5325631 - 358 24 12 1993 224.0000000 356.2857120 - 359 25 12 1993 337.0000000 396.8305058 - 360 26 12 1993 288.0000000 390.2670838 - 361 27 12 1993 248.0000000 349.9690926 - 362 28 12 1993 219.0000000 306.4514239 - 363 29 12 1993 204.0000000 267.5655823 - 364 30 12 1993 188.0000000 234.3840686 - 365 31 12 1993 175.0000000 208.1499970 diff --git a/check/case_mrm_01/output_save/b2_discharge.nc b/check/case_mrm_01/output_save/b2_discharge.nc deleted file mode 100644 index b24e08cf97984490c4ad5dc75ce31d76c2638fa0..0000000000000000000000000000000000000000 Binary files a/check/case_mrm_01/output_save/b2_discharge.nc and /dev/null differ diff --git a/check/case_mrm_01/output_save/b2_mRM_Fluxes_States.nc b/check/case_mrm_01/output_save/b2_mRM_Fluxes_States.nc deleted file mode 100644 index 5ab7c2fae6c88b44e54d869fc650fa927b224df6..0000000000000000000000000000000000000000 Binary files a/check/case_mrm_01/output_save/b2_mRM_Fluxes_States.nc and /dev/null differ diff --git a/check/case_mrm_01/output_save/b2_mRM_restart_002.nc b/check/case_mrm_01/output_save/b2_mRM_restart_002.nc deleted file mode 100644 index aa335f46a80cf6c7129e2ae5db64b84966a54018..0000000000000000000000000000000000000000 Binary files a/check/case_mrm_01/output_save/b2_mRM_restart_002.nc and /dev/null differ diff --git a/doc/doxygen.config b/doc/doxygen.config index cbd23fc73378e2cd572a14c91721d3cc66122d53..6b7c3cee9c82d85abf0af024e5ea497b71d496fb 100644 --- a/doc/doxygen.config +++ b/doc/doxygen.config @@ -2081,7 +2081,7 @@ INCLUDE_FILE_PATTERNS = # recursively expanded use the := operator instead of the = operator. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -PREDEFINED = MRM2MHM +PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # tag can be used to specify a list of macro names that should be expanded. The diff --git a/mhm.fbp b/mhm.fbp deleted file mode 100644 index ecb8a0f7c950b16ddddcf7fa104ba419f3fc6ac7..0000000000000000000000000000000000000000 --- a/mhm.fbp +++ /dev/null @@ -1,303 +0,0 @@ -[ProjectLibFiles] -LibFileNum=0 - -[RECONSTRUCTION] -BPNUM=0 -FILENUM=0 - -[BREAKPOINTS] -BPNUM=0 - -[DBGDEF] -english=0 -OPTIMIZE=0 -FDEFINESTRING="mrm2mhm" -DEBUGOPT=1 -F77OPT=0 -free=1 -double=0 -nan=1 -float_store=0 -dryrun=0 -fpp=1 -fixed=0 -hollerith_io=0 -openmp=0 -big_ieee=0 -dcfuns=0 -thread_safe=0 -u=0 -ieee=1 -target=0 -gc=0 -Onopropagate=0 -Opropagate=0 -Orounding=0 -Ounsafe=0 -pic=0 -r8=0 -save=0 -strict95=1 -WarnDisp=0 -alloctr=0 -obs=0 -uda=0 -unused=0 -ques=0 -unreffed=0 -x77=0 -x95=0 -dusty=0 -f90_sign=0 -gline=1 -mismatch=0 -mismatch_all=0 -kind=1 -FortranStandard=0 -addcompopt="" -ExecutionTest=2 -C.EQ.array=0 -C.EQ.bits=0 -C.EQ.calls=0 -C.EQ.dangling=0 -C.EQ.do=0 -C.EQ.intovf=0 -C.EQ.present=0 -C.EQ.pointer=0 -C.EQ.recursion=0 -C.EQ.scale=0 -C.EQ.undefined=0 -Memlogfile=0 -MemoryTrace=0 -address=0 -line=0 -paranoia=0 -size=0 -verbose=0 -DEFINESTRING="" -C_ADDCOMPOPT="" -C_ansi=0 -C_ffloat-store=0 -C_funsigned-char=0 -C_trigraphs=0 -C_Werror=0 -C_WarnDisp=0 -Werror=0 -f95liblink=0 -nostdlib=0 -s=0 -symbolic=0 -mwindows=0 -f95link_gc=0 -f95link_thread_safe=0 -unsharedrts=0 -no_underflow_warning=0 -ext_simdem=0 -ext_lapack=0 -ext_naglib=0 -PAUSEEXIT=1 -CMPRANKOPT=1 -KEEP_GOING=0 -ext_opengl=0 -ext_gtkglade=0 -IncludePath="/usr/local/include/,/usr/local/netcdf-fortran-4.4.3-nagfor/include/" -LibPath="/usr/local/lib/,/usr/local/netcdf-fortran-4.4.3-nagfor/lib/" -LibFiles= -LinkOption=-lnetcdff -lnetcdf -lhdf5 -lhdf5_hl -lsz -lz - -[RELDEF] -english=0 -OPTIMIZE=3 -FDEFINESTRING="mrm2mhm" -DEBUGOPT=0 -F77OPT=0 -free=1 -double=0 -nan=0 -float_store=0 -dryrun=0 -fpp=1 -fixed=0 -hollerith_io=0 -openmp=0 -big_ieee=0 -dcfuns=0 -thread_safe=0 -u=0 -ieee=1 -target=0 -gc=0 -Onopropagate=0 -Opropagate=0 -Orounding=0 -Ounsafe=0 -pic=0 -r8=0 -save=0 -strict95=0 -WarnDisp=1 -alloctr=0 -obs=0 -uda=0 -unused=0 -ques=0 -unreffed=0 -x77=0 -x95=0 -dusty=0 -f90_sign=0 -gline=0 -mismatch=0 -mismatch_all=0 -kind=1 -FortranStandard=0 -addcompopt="" -ExecutionTest=0 -C.EQ.array=0 -C.EQ.bits=0 -C.EQ.calls=0 -C.EQ.dangling=0 -C.EQ.do=0 -C.EQ.intovf=0 -C.EQ.present=0 -C.EQ.pointer=0 -C.EQ.recursion=0 -C.EQ.scale=0 -C.EQ.undefined=0 -Memlogfile=0 -MemoryTrace=0 -address=0 -line=0 -paranoia=0 -size=0 -verbose=0 -DEFINESTRING="" -C_ADDCOMPOPT="" -C_ansi=0 -C_ffloat-store=0 -C_funsigned-char=0 -C_trigraphs=0 -C_Werror=0 -C_WarnDisp=0 -Werror=0 -f95liblink=0 -nostdlib=0 -s=0 -symbolic=0 -mwindows=0 -f95link_gc=0 -f95link_thread_safe=0 -unsharedrts=0 -no_underflow_warning=0 -ext_simdem=0 -ext_lapack=0 -ext_naglib=0 -PAUSEEXIT=1 -CMPRANKOPT=1 -KEEP_GOING=0 -ext_opengl=0 -ext_gtkglade=0 -IncludePath="/usr/local/include,/usr/local/netcdf-fortran-4.4.3-nagfor/include/" -LibPath="/usr/local/lib,/usr/local/netcdf-fortran-4.4.3-nagfor/lib/" -LibFiles= -LinkOption=-lnetcdff -lnetcdf -lhdf5 -lhdf5_hl -lsz -lz - -[ProjectDef] -ProjectName=mHM -ProjectType=0 -ExeFile=mhm -CommandLine= -RebuildFlag=0 -CLOPTMODE=0 -WinOptMode=1 -RuntimeDir= - -[ProjectFiles] -FileNum=86 -PFile001=src/mHM/mhm_driver.f90 -PFile002=src/lib/mo_kind.f90 -PFile003=src/lib/mo_append.f90 -PFile004=src/lib/mo_string_utils.f90 -PFile005=src/lib/mo_utils.f90 -PFile006=src/lib/mo_xor4096.f90 -PFile007=src/lib/mo_anneal.f90 -PFile008=src/lib/mo_constants.f90 -PFile009=src/lib/mo_corr.f90 -PFile010=src/lib/mo_dds.f90 -PFile011=src/lib/mo_moment.f90 -PFile012=src/lib/mo_errormeasures.f90 -PFile013=src/lib/mo_finish.f90 -PFile014=src/lib/mo_julian.f90 -PFile015=src/lib/mo_linfit.f90 -PFile016=src/lib/mo_ncwrite.f90 -PFile017=src/lib/mo_mcmc.f90 -PFile018=src/lib/mo_message.f90 -PFile019=src/lib/mo_ncread.f90 -PFile020=src/lib/mo_netcdf.f90 -PFile021=src/lib/mo_nml.f90 -PFile022=src/lib/mo_orderpack.f90 -PFile023=src/lib/mo_percentile.f90 -PFile024=src/lib/mo_sce.f90 -PFile025=src/lib/mo_spatialsimilarity.f90 -PFile026=src/lib/mo_standard_score.f90 -PFile027=src/lib/mo_temporal_aggregation.f90 -PFile028=src/lib/mo_timer.f90 -PFile029=src/common/mo_common_variables.f90 -PFile030=src/mHM/mo_mhm_constants.f90 -PFile031=src/mHM/mo_global_variables.f90 -PFile032=src/mHM/mo_init_states.f90 -PFile033=src/common/mo_read_forcing_nc.f90 -PFile034=src/mHM/mo_file.f90 -PFile035=src/mHM/mo_read_meteo.f90 -PFile036=src/mHM/mo_spatial_agg_disagg_forcing.f90 -PFile037=src/mHM/mo_meteo_forcings.f90 -PFile038=src/mHM/mo_canopy_interc.f90 -PFile039=src/mHM/mo_upscaling_operators.f90 -PFile040=src/mHM/mo_mpr_runoff.f90 -PFile041=src/mHM/mo_mpr_smhorizons.f90 -PFile042=src/mHM/mo_mpr_soilmoist.f90 -PFile043=src/mHM/mo_multi_param_reg.f90 -PFile044=src/mHM/mo_neutrons.f90 -PFile045=src/mHM/mo_pet.f90 -PFile046=src/mHM/mo_runoff.f90 -PFile047=src/mHM/mo_snow_accum_melt.f90 -PFile048=src/mHM/mo_soil_moisture.f90 -PFile049=src/mHM/mo_temporal_disagg_forcing.f90 -PFile050=src/mHM/mo_mhm.f90 -PFile051=src/mHM/mo_restart.f90 -PFile052=src/mHM/mo_write_fluxes_states.f90 -PFile053=src/mRM/mo_mrm_constants.f90 -PFile054=src/mRM/mo_mrm_global_variables.f90 -PFile055=src/mRM/mo_mrm_file.f90 -PFile056=src/mRM/mo_mrm_tools.f90 -PFile057=src/mRM/mo_mrm_net_startup.f90 -PFile058=src/mRM/mo_mrm_read_config.f90 -PFile059=src/common/mo_read_spatial_data.f90 -PFile060=src/common/mo_read_timeseries.f90 -PFile061=src/mRM/mo_mrm_read_data.f90 -PFile062=src/mRM/mo_mrm_read_latlon.f90 -PFile063=src/mRM/mo_mrm_restart.f90 -PFile064=src/mRM/mo_mrm_init.f90 -PFile065=src/mRM/mo_mrm_mpr.f90 -PFile066=src/mRM/mo_mrm_routing.f90 -PFile067=src/mRM/mo_mrm_write_fluxes_states.f90 -PFile068=src/mRM/mo_mrm_write.f90 -PFile069=src/mHM/mo_mhm_eval.f90 -PFile070=src/mRM/mo_mrm_signatures.f90 -PFile071=src/mRM/mo_mrm_objective_function_runoff.f90 -PFile072=src/common/mo_optimization.f90 -PFile073=src/mHM/mo_objective_function.f90 -PFile074=src/mHM/mo_prepare_gridded_lai.f90 -PFile075=src/mHM/mo_read_config.f90 -PFile076=src/mHM/mo_read_latlon.f90 -PFile077=src/mHM/mo_read_optional_data.f90 -PFile078=src/mHM/mo_read_lut.f90 -PFile079=src/mHM/mo_soil_database.f90 -PFile080=src/mHM/mo_read_wrapper.f90 -PFile081=src/mHM/mo_startup.f90 -PFile082=src/mHM/mo_write_ascii.f90 -PFile083=src/mHM/mo_set_netcdf_outputs.f90 -PFile084=src/mHM/mo_template.f90 -PFile085=src/mRM/mo_mrm_eval.f90 -PFile086=src/mRM/mrm_driver.f90 - diff --git a/mrm.nml b/mrm.nml deleted file mode 100644 index 6eb4fd029af189ca27ac8bda29f311b7f72fbfb8..0000000000000000000000000000000000000000 --- a/mrm.nml +++ /dev/null @@ -1,546 +0,0 @@ -! Emacs: -*- mode: f90 -*- -!> \file mhm.nml -! -!> \brief Namelists of mHM, MPR, mRM -! -!> \details This files provides all namelists for mHM, MPR, mRM. -! -!> \authors Matthias Zink, Matthias Cuntz -!> \date Jan 2013 -! Modified, -! Rohini Kumar, Aug 2013 - added "fracSealed_cityArea" in the LCover namelist -! - added new namelist "LAI_data_information" -! - added new directory paths for soil and geology LUTs -! which are common to all modeled domains -! Luis Samaniego, Nov 2013 - process description -! Matthias Zink, Mar 2014 - added evaluation and inflow gauge namelists -! Rohini Kumar, May 2014 - options for different cordinate system for the model run -! Stephan Thober, May 2014 - added switch for chunk read in -! Stephan Thober, Jun 2014 - reorganized restart flags, added flag for performing mpr -! Kumar R., Rakovec O. Sep 2014 - added KGE estimator (OF number 9) -! Matthias Zink, Nov 2014 - added multiple options for process 5 - PET -! Matthias Zink, Dec 2014 - adopted inflow gauges to ignore headwater cells -! Matthias Zink, Mar 2015 - added optional soil mositure read in for calibration -! Stephan Thober, Nov 2016 - added adaptive timestep scheme for routing -! Rohini Kumar, Dec 2017 - added LAI option to read long term mean monthly fields -! Zink M. Demirel M.C., Mar 2017 - added Jarvis soil water stress function at SM process(3)=2 -! Demirel M.C., Stisen S., May 2017 - added FC dependency on root fraction coef. at SM process(3)=3 -! Demirel M.C., Stisen S., Jun 2017 - added PET correction based on LAI at PET process(5)=-1 -! O. Rakovec, R. Kumar Nov 2017 - added project description for the netcdf outputs -! Robert Schweppe Apr 2018 - reorganized namelists depending on relation to processes (MPR, mHM, mRM) -! S. Thober, B. Guse May 2018 - added weighted NSE - -!****************************************************************************************** -! PROJECT DESCRIPTION (mandatory) -!****************************************************************************************** -!----------------------------------------------------------------------------- -!> Provide details on the model simulations, to appear in the netcdf output attributes -!----------------------------------------------------------------------------- -&project_description -!> project name -project_details="mHM test domain project" -!> any specific description of simulation -setup_description="model run for the Mosel domain, forced with the E-OBS meteorologic data" -!> e.g. hindcast simulation, seasonal forecast, climate projection -simulation_type="historical simulation" -!> convention used for dataset -Conventions="XXX" -!> contact details, incl. PI name, modellers -contact="mHM developers (email:mhm-developers@ufz.de)" -!> developing institution, specific mHM revision, latest release version (automatically included) -mHM_details="Helmholtz Center for Environmental Research - UFZ, Department Computational Hydrosystems, Stochastic Hydrology Group" -!> some details on data/model run version (creation date is included automatically) -history="model run version 1" -/ - -!****************************************************************************************** -! -!****************************************************************************************** -! MAIN (mandatory) -!****************************************************************************************** -!> Main namelist -!> Most of the variables (if not all) given in this namelist are common -!> to all domains to be modeled. -&mainconfig -!----------------------------------------------------------------------------- -!> input data & model run cordinate system -!> 0 -> regular X & Y coordinate system (e.g., GK-4 or Lambert equal area system) -!> 1 -> regular lat & lon coordinate system -!----------------------------------------------------------------------------- -iFlag_cordinate_sys = 0 -!----------------------------------------------------------------------------- -!> Number of domains to be modeled. -!> Number given here should correspond to one given in "gaugeinfo.txt" file. -!> All gauging stations within those domains will be taken for the optimization. -!> IF routing process is ON then give nDomains = 1, for this case, mHM will internally -!> discard gauging station information. -!----------------------------------------------------------------------------- -nDomains = 2 -!----------------------------------------------------------------------------- -!> resolution of Level-1 hydrological simulations in mHM [m or degree] per domain -!> NOTE: if iFlag_cordinate_sys = 0, then resolution_Hydrology is in [m] -!> if iFlag_cordinate_sys = 1, then resolution_Hydrology is in [degree-decimal] -!----------------------------------------------------------------------------- -resolution_Hydrology(1) = 24000 -resolution_Hydrology(2) = 24000 -!---------------------------------------------------------------------------- -!> specify same index for domains to share L0_data to save memory -!> the index must MONOTONICALLY increase. Index can be repeated. e.g., 1,1,2,2,3 -!> but not 1,2,1. The correct way should be: 1,1,2. -!----------------------------------------------------------------------------- -L0Domain(1) = 1 -L0Domain(2) = 2 -!----------------------------------------------------------------------------- -!> flag for writing restart output -!----------------------------------------------------------------------------- -write_restart = .TRUE. -/ -!****************************************************************************************** -! main config for mHM and mRM (mHM and mRM-related) -!****************************************************************************************** -&mainconfig_mhm_mrm -!----------------------------------------------------------------------------- -! DIRECTORIES -!----------------------------------------------------------------------------- -!> Number in brackets indicates domain number. -!> directory where restart input is located -dir_RestartIn(1) = "test_domain/restart/" -!> directory where restart input is located -dir_RestartIn(2) = "test_domain_2/restart/" -!----------------------------------------------------------------------------- -!> resolution of Level-11 discharge routing [m or degree] per domain -!> this level-11 discharge routing resolution must be >= and multiple of the -!> level-1 hydrological simulations resolution -!> NOTE: if iFlag_cordinate_sys = 0, then resolution_Routing is in [m] -!> if iFlag_cordinate_sys = 1, then resolution_Routing is in [degree-decimal] -!----------------------------------------------------------------------------- -resolution_Routing(1) = 24000 -resolution_Routing(2) = 24000 -!----------------------------------------------------------------------------- -!> model run timestep [h] either 1 or 24 -!----------------------------------------------------------------------------- -timestep = 24 -!----------------------------------------------------------------------------- -!> flags for reading restart output -!----------------------------------------------------------------------------- -read_restart = .FALSE. -!----------------------------------------------------------------------------- -!> flag for optimization: .TRUE.: optimization -!> or .FALSE.: no optimazition -!----------------------------------------------------------------------------- -optimize = .FALSE. -!> Optimization shall be restarted from ./mo_.restart file, which -!> should be located next to the mhm executable (mhm) -optimize_restart = .FALSE. -!> (0) MCMC (requires single-objective (SO) function) -!> (1) DDS (requires single-objective (SO) function) -!> (2) Simulated Annealing (requires single-objective (SO) function) -!> (3) SCE (requires single-objective (SO) function) -!> additional settings for the different methods can be provided below in namelist Optimization -opti_method = 1 -!> (1) SO: Q: 1.0 - NSE -!> (2) SO: Q: 1.0 - lnNSE -!> (3) SO: Q: 1.0 - 0.5*(NSE+lnNSE) -!> (4) SO: Q: -1.0 * loglikelihood with trend removed from absolute errors and then lag(1)-autocorrelation removed -!> (5) SO: Q: ((1-NSE)**6+(1-lnNSE)**6)**(1/6) -!> (6) SO: Q: SSE -!> (7) SO: Q: -1.0 * loglikelihood with trend removed from absolute errors -!> (8) SO: Q: -1.0 * loglikelihood with trend removed from the relative errors and then lag(1)-autocorrelation removed -!> (9) SO: Q: 1.0 - KGE (Kling-Gupta efficiency measure) -!> (10) SO: SM: 1.0 - KGE of catchment average soilmoisture -!> (11) SO: SM: 1.0 - Pattern dissimilarity (PD) of spatially distributed soil moisture -!> (12) SO: SM: Sum of squared errors (SSE) of spatially distributed standard score (normalization) of soil moisture -!> (13) SO: SM: 1.0 - average temporal correlation of spatially distributed soil moisture -!> (14) SO: Q: sum[((1.0-KGE_i)/ nGauges)**6]**(1/6) > combination of KGE of every gauging station based on a power-6 norm -!> (15) SO: Q + domain_avg_TWS: [1.0-KGE(Q)]*RMSE(domain_avg_TWS) - objective function using Q and domain average (standard score) TWS -!> (16) (reserved) please use the next number when implementing a new one -!> MO: Q: 1st objective: (1) = 1.0 - NSE -!> Q: 2nd objective: (2) = 1.0 - lnNSE -!> (17) SO: N: 1.0 - KGE of spatio-temporal neutron data, catchment-average -!> (18) (reserved) please use the next number when implementing a new one -!> MO: Q: 1st objective: 1.0 - lnNSE(Q_highflow) (95% percentile) -!> Q: 2nd objective: 1.0 - lnNSE(Q_lowflow) (5% of data range) -!> (19) (reserved) please use the next number when implementing a new one -!> MO: Q: 1st objective: 1.0 - lnNSE(Q_highflow) (non-low flow) -!> Q: 2nd objective: 1.0 - lnNSE(Q_lowflow) (5% of data range) -!> (20) (reserved) please use the next number when implementing a new one -!> MO: Q: 1st objective: absolute difference in FDC's low-segment volume -!> Q: 2nd objective: 1.0 - NSE of discharge of months DJF -!> (21) (reserved) please use the next number when implementing a new one -!> SO: Q: ( (1.0-lnNSE(Q_highflow))**6 + (1.0-lnNSE(Q_lowflow))**6 )**(1/6) -!> where Q_highflow and Q_lowflow are calculated like in objective (19) -!> (22-26) (reserved MC/JM/ST) please use the next number when implementing a new one -!> (27) SO: ET: 1.0 - KGE of catchment average evapotranspiration -!> (28) SO: Q + SM: weighted OF using SM (OF12) and Q (OF14) equally weighted -!> further functions can be implemented in mo_objective_function and mo_mrm_objective_function -!> (29) SO: Q + ET: weighted OF using ET (OF27) and Q (OF14) equally weighted -!> (30) SO: Q + domain_avg_ET: [1.0-KGE(Q)]*RMSE(domain_avg_ET) - objective function using Q and domain average ET (standard score)$ -!> (31) SO: Q: 1 - weighted NSE (NSE is weighted with observed discharge) - -!> further functions can be implemented in mo_objective_function and mo_mrm_objective_function -opti_function = 10 -/ - -!****************************************************************************************** -! main config for mRM (mRM-related) -!****************************************************************************************** -&mainconfig_mrm -!----------------------------------------------------------------------------- -!> use ALMA convention for input and output variables -!> see http://www.lmd.jussieu.fr/~polcher/ALMA/convention_3.html -!> .False. -> default mHM units -!> .True. -> ALMA convention -!> CAUTION: at the moment, only Qall as input for mRM is affected -!----------------------------------------------------------------------------- -ALMA_convention = .FALSE. -!----------------------------------------------------------------------------- -!> for using mRM as the routing module for input other than from mHM -!> additional specifications for filename and netCDF variable can be made -!> default behaviour: -!> none given: get variable 'total_runoff' from file 'total_runoff.nc' -!> varnametotalrunoff given: get variable '${varnametotalrunoff}' from file '${varnametotalrunoff}.nc' -!> filenametotalrunoff given: get variable 'total_runoff' from file '${filenametotalrunoff}.nc' -!> both given: get variable '${varnametotalrunoff}' from file '${filenametotalrunoff}.nc' -!----------------------------------------------------------------------------- -varnametotalrunoff = 'Q' -filenametotalrunoff = 'total_runoff' -/ - -!****************************************************************************************** -! DIRECTORIES -!****************************************************************************************** -!> Namelist with all directories for common file as well as separate file for every domain. -!> Number in brackets indicates domain number. -!> This number HAS TO correspond with the number of domain given in the "mainconfig" -!> namelist as well as the indices given in "evaluation_gauges" namelist. -!****************************************************************************************** -! directories (mandatory) -!****************************************************************************************** -&directories_general -!> all directories are common to all domains -!> config run out file common to all modeled domains should be written to directory -dirConfigOut = "./" -! -!> directory where common input files should be located for all modeled domains -!> (only for *_classdefinition files) -dirCommonFiles = "test_domain/input/morph/" -! -!**** for domain 1 -!> directory where morphological files are located -dir_Morpho(1) = "test_domain/input/morph/" -!> directory where land cover files are located -dir_LCover(1) = "test_domain/input/luse/" -!> directory where restart output should be written -dir_RestartOut(1) = "test_domain/output_b1/b1_" -!> directory where output should be written -dir_Out(1) = "test_domain/output_b1/b1_" -!> file containing latitude and longitude on the resolution_Hydrology -file_LatLon(1) = "test_domain/input/latlon/latlon_1.nc" - -! **** for domain 2 -!> directory where morphological files are located -dir_Morpho(2) = "test_domain_2/input/morph/" -!> directory where land cover files are located -dir_LCover(2) = "test_domain_2/input/luse/" -!> directory where restart output should be written -dir_RestartOut(2) = "test_domain/output_b1/b2_" -!> directory where output should be written -dir_Out(2) = "test_domain/output_b1/b2_" -!> file containing latitude and longitude on the resolution_Hydrology -file_LatLon(2) = "test_domain_2/input/latlon/latlon.nc" -/ -!****************************************************************************************** -! directories (mRM-related) -!****************************************************************************************** -&directories_mRM -! -!----------------------------------------------------- -!> domain wise directory paths -!----------------------------------------------------- -! -!> directory where discharge files are located -dir_Gauges(1) = "test_domain/input/gauge/" -dir_Gauges(2) = "test_domain_2/input/gauge/" -!> directory where simulated runoff can be found (only required if coupling mode equals 0) -dir_Total_Runoff(1) = 'test_domain/input/total_runoff/' -dir_Total_Runoff(2) = 'test_domain_2/input/total_runoff/' -/ - -!****************************************************************************************** -! PROCESSES (mandatory) -!****************************************************************************************** -!> This matrix manages which processes and process descriptions are used for simulation. -!> The number of processes and its corresponding numbering are fixed. The process description can be -!> chosen from the options listed above the name of the particular process case. This number has to be -!> given for processCase(*). -! -&processSelection -!> interception -!> 1 - maximum Interception -processCase(1) = 1 -!> snow -!> 1 - degree-day approach -processCase(2) = 1 -!> soil moisture -!> 1 - Feddes equation for ET reduction, multi-layer infiltration capacity approach, Brooks-Corey like -!> 2 - Jarvis equation for ET reduction, multi-layer infiltration capacity approach, Brooks-Corey like -!> 3 - Jarvis equation for ET reduction and FC dependency on root fraction coefficient -processCase(3) = 1 -!> directRunoff -!> 1 - linear reservoir exceedance approach -processCase(4) = 1 -!> potential evapotranspiration (PET) -!> -1 - PET is input, LAI driven correction -!> 0 - PET is input, aspect driven correction -!> 1 - Hargreaves-Sammani method -!> 2 - Priestley-Taylor mehtod -!> 3 - Penman-Monteith method -processCase(5) = 0 -!> interflow -!> 1 - storage reservoir with one outflow threshold and nonlinear response -processCase(6) = 1 -!> percolation -!> 1 - GW assumed as linear reservoir -processCase(7) = 1 -!> routing -!> 0 - deactivated -!> 1 - Muskingum approach -!> 2 - adaptive timestep -processCase(8) = 3 -!> baseflow -!> 1 - recession parameters (not regionalized yet) -processCase(9) = 1 -!> ground albedo of cosmic-ray neutrons -!> THIS IS WORK IN PROGRESS, DO NOT USE FOR RESEARCH -!> 0 - deactivated -!> 1 - inverse N0 based on Desilets et al. 2010 -!> 2 - COSMIC forward operator by Shuttleworth et al. 2013 -processCase(10) = 0 -/ - -!****************************************************************************************** -! LAND COVER (mandatory) -!****************************************************************************************** -&LCover -!> Variables given in this namelist are common to all domains to be modeled. -!> Please make sure that the land cover periods are covering the simulation period. -!> number of land cover scenes to be used -!> The land cover scene periods are shared by all catchments. -!> The names should be equal for all domains. The land cover scnes have to be ordered -!> chronologically. -nLCoverScene = 2 -! indicate period with brackets behind variable -! first scene -!> starting year of land cover scene 1 -LCoverYearStart(1) = 1981 -!> ending year of land cover scnene 1 -LCoverYearEnd(1) = 1990 -!> name of land cover file for scnene 1 -LCoverfName(1) = 'lc_1981.asc' - -!> starting year of land cover scene 2 -LCoverYearStart(2) = 1991 -!> ending year of land cover scnene 2 -LCoverYearEnd(2) = 2000 -!> name of land cover file for scnene 2 -LCoverfName(2) = 'lc_1991.asc' -/ - -!****************************************************************************************** -! Time periods (mHM and mRM-related) -!****************************************************************************************** -&time_periods -!----------------------------------------------------------------------------- -!> specification of number of warming days [d] and the simulation period. -!> All dynamic data sets(e.g., meteo. forcings, landcover scenes) should start -!> from warming days and ends at the last day of the evaluation period. -! -!> 1---------2-------------------3 -!> -!> 1-> Starting of the effective modeling period (including the warming days) -!> 2-> Starting of the given simulation period -!> 3-> Ending of the given simulation period (= end of the effective modeling period) -! -!> IF you want to run the model from 2002/01/01 (Starting of the given simulation -!> period=2) to 2003/12/31 (End of the given simulation period=3) with 365 warming -!> day, which is 2001/01/01 = 1), THEN all dynamic datasets should be given for -!> the effective modeling period of 2001/01/01 to 2003/12/31. -!----------------------------------------------------------------------------- -warming_Days(1) = 0 -warming_Days(2) = 0 -!> first year of wanted simulation period -eval_Per(1)%yStart = 1990 -eval_Per(2)%yStart = 1993 -!> first month of wanted simulation period -eval_Per(1)%mStart = 01 -eval_Per(2)%mStart = 01 -!> first day of wanted simulation period -eval_Per(1)%dStart = 01 -eval_Per(2)%dStart = 01 -!> last year of wanted simulation period -eval_Per(1)%yEnd = 1993 -eval_Per(2)%yEnd = 1993 -!> last month of wanted simulation period -eval_Per(1)%mEnd = 12 -eval_Per(2)%mEnd = 12 -!> last day of wanted simulation period -eval_Per(1)%dEnd = 31 -eval_Per(2)%dEnd = 31 -/ - -!****************************************************************************************** -! INFORMATION RELATED TO LAI DATA (MPR-related) -!****************************************************************************************** -&LAI_data_information -! -!----------------------------------------------------------------------------------- -!> Flag timeStep_LAI_input identifies how LAI is read in mHM. -!> This flag is unique and valid for all domains. -! -!> timeStep_LAI_input -!> -!> 0: read LAI from long term monthly mean lookup table (related to land cover file). -!> The filename (LAI_classdefinition.txt) for the LUT is hard coded in mo_file.f90 -!> Information regarding long-term monthly mean LAI for land cover classes -!> appearing in all modeled domains should be included in this LUT file. -!> This is an unique file applicable to all domains to be modeled. -!> The respective plant functional type is in LAI_class.asc, which must be also given -!> and should be located in each domain's morph directory. -!> -!> < 0: Read gridded LAI files. -!> -1: gridded LAI are daily values -!> -2: gridded LAI are monthly values -!> -3: gridded LAI are yearly values -! -!> 1: read mean monthly gridded LAI values. -!> must be a separate *.nc file for every (modeled) domains. -!----------------------------------------------------------------------------------- -timeStep_LAI_input = 0 -!> input file format of gridded file (if timeStep_LAI_input < 0) -!> nc - assume one file with name lai.nc -!> input file format of gridded file (if timeStep_LAI_input == 1) -!> nc - assume one file with name lai.nc with 12 monthly grids of mean LAI estimates -inputFormat_gridded_LAI = "nc" -/ - -! -!****************************************************************************************** -! LCover information (MPR-related) -!****************************************************************************************** -&LCover_MPR -!>fraction of area within city assumed to be fully sealed [0.0-1.0] -fracSealed_cityArea = 0.6 -/ - -!****************************************************************************************** -! LAI gridded time series folder definition (optional, MPR-related) -!****************************************************************************************** -! this is only needed for timeStep_LAI_input != 0 -&directories_MPR -!> directory where gridded LAI files are located -dir_gridded_LAI(1) = "test_domain/input/lai/" -!> directory where gridded LAI files are located -dir_gridded_LAI(2) = "test_domain/input/lai/" -/ - -!****************************************************************************************** -! Specifcation of evaluation and inflow gauges (mRM-related) -!****************************************************************************************** -!> namelist controlling the gauging station information -!> The ID has to correspond to the ID's given in the 'gaugelocation.asc' and -!> to the filename containing the time series -&evaluation_gauges -!> Gauges for model evaluation -! -!> Total number of gauges (sum of all gauges in all subbains) -nGaugesTotal = 2 -!> structure of gauge_id(i,j) & gauge_filename(i,j): -!> 1st dimension is the number of the subdomain i -!> 2nd dimension is the number of the gauge j within the subdomain i -!> numbering has to be consecutive -! -!> domain 1 -!> number of gauges for subdomain (1) -NoGauges_domain(1) = 1 -!> in subdomain(1), this is the id of gauge(1) --> (1,1) -Gauge_id(1,1) = 398 -!> name of file with timeseries for subdomain(1) at gauge(1) --> (1,1) -gauge_filename(1,1) = "00398.txt" -! -!> domain 2 -!> number of gauges for subdomain (2) -NoGauges_domain(2) = 1 -!> in subdomain(2), this is the id of gauge(1) --> (2,1) -Gauge_id(2,1) = 45 -!> name of file with timeseries for subdomain(2) at gauge(1) --> (2,1) -Gauge_filename(2,1) = "45.txt" -/ - -&inflow_gauges -!> Gauges / gridpoints used for inflow to the model domain -!> e.g. in the case of upstream/headwater areas which are -!> not included in the model domain -! -!> Total number of inflow gauges (sum of all gauges in all subbains) -nInflowGaugesTotal = 0 -!> structure of gauge_id(i,j) & gauge_filename(i,j): -!> 1st dimension is the number of the subdomain i -!> 2nd dimension is the number of the gauge j within the subdomain i -!> numbering has to be consecutive -! -!> domain 1 -!> number of gauges for subdomain (1) -NoInflowGauges_domain(1) = 0 -!> id of inflow gauge(1) for subdomain(1) --> (1,1) -InflowGauge_id(1,1) = -9 -!> name of file with timeseries of inflow gauge(1) for subdomain(1) --> (1,1) -InflowGauge_filename(1,1) = "" -!> consider flows from upstream/headwater cells of inflow gauge(1) for subdomain(1) --> (1,1) -InflowGauge_Headwater(1,1) = .FALSE. -/ - -!****************************************************************************************** -! SETTINGS FOR OPTIMIZATION (mHM and mRM-related) -!****************************************************************************************** -&Optimization -! ------------------------------------- -!> General: -! ------------------------------------- -!> number of iteration steps by parameterset -nIterations = 7 -!> seed of random number gemerator (default: -9) -!> if default: seed is obtained from system clock -seed = 1235876 -! ------------------------------------- -!> DDS specific: -! ------------------------------------- -!> perturbation rate r (default: 0.2) -dds_r = 0.2 -! ------------------------------------- -!> SA specific: -! ------------------------------------- -!> Initial Temperature (default: -9.0) -!> if default: temperature is determined by algorithm of Ben-Ameur (2004) -sa_temp = -9.0 -! ------------------------------------- -!> SCE specific: -! ------------------------------------- -!> Number of Complexes (default: -9) -!> if default: ngs = 2 -sce_ngs = 2 -!> Points per Complex (default: -9) -!> if default: npg = 2n+1 -sce_npg = -9 -!> Points per Sub-Complex (default: -9) -!> if default: nps = n+1 -sce_nps = -9 -! ------------------------------------- -!> MCMC specific: -! ------------------------------------- -!> .true.: use MCMC for optimisation and estimation of parameter uncertainty -!> .false.: use MCMC for estimation of parameter uncertainty -mcmc_opti = .false. -!> Parameters of error model if mcmc_opti=.false. -!> e.g. for opti_function=8: two parameters a and b: err = a + b*Q -mcmc_error_params = 0.01, 0.6 -/ diff --git a/mrm_parameter.nml b/mrm_parameter.nml deleted file mode 100644 index 9b302c49fe81955e33d4564af96b7766bf21a4f4..0000000000000000000000000000000000000000 --- a/mrm_parameter.nml +++ /dev/null @@ -1,211 +0,0 @@ -! Emacs: -*- mode: f90 -*- -!global_parameters -!PARAMETER lower_bound upper_bound value FLAG SCALING -!interception -&interception1 -canopyInterceptionFactor = 0.1500, 0.4000, 0.15, 1, 1 -/ - -! snow -&snow1 -snowTreshholdTemperature = -2.0000, 2.0000, 1.0, 1, 1 -degreeDayFactor_forest = 0.0001, 4.0000, 1.5, 1, 1 -degreeDayFactor_impervious = 0.0000, 1.0000, 0.5, 1, 1 -degreeDayFactor_pervious = 0.0000, 2.0000, 0.5, 1, 1 -increaseDegreeDayFactorByPrecip = 0.1000, 0.9000, 0.5, 1, 1 -maxDegreeDayFactor_forest = 0.0000, 8.0000, 3.0, 1, 1 -maxDegreeDayFactor_impervious = 0.0000, 8.0000, 3.5, 1, 1 -maxDegreeDayFactor_pervious = 0.0000, 8.0000, 4.0, 1, 1 -/ - -! soilmoisture -&soilmoisture1 -orgMatterContent_forest = 0.0000, 20.000, 3.4, 1, 1 -orgMatterContent_impervious = 0.0000, 1.0000, 0.1, 1, 1 -orgMatterContent_pervious = 0.0000, 4.0000, 0.6, 1, 1 -PTF_lower66_5_constant = 0.6462, 0.9506, 0.76, 1, 1 -PTF_lower66_5_clay = 0.0001, 0.0029, 0.0009, 1, 1 -PTF_lower66_5_Db = -0.3727, -0.1871, -0.264, 1, 1 -PTF_higher66_5_constant = 0.5358, 1.1232, 0.89, 1, 1 -PTF_higher66_5_clay = -0.0055, 0.0049, -0.001, 1, 1 -PTF_higher66_5_Db = -0.5513, -0.0913, -0.324, 1, 1 -PTF_Ks_constant = -1.2000, -0.2850, -0.585, 1, 1 -PTF_Ks_sand = 0.0060, 0.0260, 0.0125, 1, 1 -PTF_Ks_clay = 0.0030, 0.0130, 0.0063, 1, 1 -PTF_Ks_curveSlope = 60.960, 60.960, 60.960, 0, 1 -rootFractionCoefficient_forest = 0.9000, 0.9990, 0.97, 1, 1 -rootFractionCoefficient_impervious = 0.9000, 0.9500, 0.93, 1, 1 -rootFractionCoefficient_pervious = 0.0010, 0.0900, 0.02, 1, 1 -infiltrationShapeFactor = 1.0000, 4.0000, 1.75, 1, 1 -/ - -&soilmoisture2 -orgMatterContent_forest = 0.0000, 20.000, 3.4, 1, 1 -orgMatterContent_impervious = 0.0000, 1.0000, 0.1, 1, 1 -orgMatterContent_pervious = 0.0000, 4.0000, 0.6, 1, 1 -PTF_lower66_5_constant = 0.6462, 0.9506, 0.76, 1, 1 -PTF_lower66_5_clay = 0.0001, 0.0029, 0.0009, 1, 1 -PTF_lower66_5_Db = -0.3727, -0.1871, -0.264, 1, 1 -PTF_higher66_5_constant = 0.5358, 1.1232, 0.89, 1, 1 -PTF_higher66_5_clay = -0.0055, 0.0049, -0.001, 1, 1 -PTF_higher66_5_Db = -0.5513, -0.0913, -0.324, 1, 1 -PTF_Ks_constant = -1.2000, -0.2850, -0.585, 1, 1 -PTF_Ks_sand = 0.0060, 0.0260, 0.0125, 1, 1 -PTF_Ks_clay = 0.0030, 0.0130, 0.0063, 1, 1 -PTF_Ks_curveSlope = 60.960, 60.960, 60.960, 0, 1 -rootFractionCoefficient_forest = 0.9000, 0.9990, 0.97, 1, 1 -rootFractionCoefficient_impervious = 0.9000, 0.9500, 0.93, 1, 1 -rootFractionCoefficient_pervious = 0.0010, 0.0900, 0.02, 1, 1 -infiltrationShapeFactor = 1.0000, 4.0000, 1.75, 1, 1 -jarvis_sm_threshold_c1 = 0.0000, 1.0000, 0.50, 1, 1 -/ - -&soilmoisture3 -orgMatterContent_forest = 0.0000, 20.000, 3.4, 1, 1 -orgMatterContent_impervious = 0.0000, 1.0000, 0.1, 1, 1 -orgMatterContent_pervious = 0.0000, 4.0000, 0.6, 1, 1 -PTF_lower66_5_constant = 0.6462, 0.9506, 0.76, 1, 1 -PTF_lower66_5_clay = 0.0001, 0.0029, 0.0009, 1, 1 -PTF_lower66_5_Db = -0.3727, -0.1871, -0.264, 1, 1 -PTF_higher66_5_constant = 0.5358, 1.1232, 0.89, 1, 1 -PTF_higher66_5_clay = -0.0055, 0.0049, -0.001, 1, 1 -PTF_higher66_5_Db = -0.5513, -0.0913, -0.324, 1, 1 -PTF_Ks_constant = -1.2000, -0.2850, -0.585, 1, 1 -PTF_Ks_sand = 0.0060, 0.0260, 0.0125, 1, 1 -PTF_Ks_clay = 0.0030, 0.0130, 0.0063, 1, 1 -PTF_Ks_curveSlope = 60.960, 60.960, 60.960, 0, 1 -rootFractionCoefficient_forest = 0.9700, 0.9850, 0.9750, 1, 1 -rootFractionCoefficient_impervious = 0.9700, 0.9850, 0.9750, 1, 1 -rootFractionCoefficient_pervious = 0.9700, 0.9850, 0.9750, 1, 1 -infiltrationShapeFactor = 1.0000, 4.0000, 1.75, 1, 1 -rootFractionCoefficient_sand = 0.0010, 0.0900, 0.09, 1, 1 -rootFractionCoefficient_clay = 0.9000, 0.9990, 0.98, 1, 1 -FCmin_glob = 0.1000, 0.2000, 0.15, 0, 1 -FCdelta_glob = 0.1000, 0.4000, 0.25, 0, 1 -jarvis_sm_threshold_c1 = 0.0000, 1.0000, 0.50, 1, 1 -/ - -&soilmoisture4 -orgMatterContent_forest = 0.0000, 20.000, 3.4, 1, 1 -orgMatterContent_impervious = 0.0000, 1.0000, 0.1, 1, 1 -orgMatterContent_pervious = 0.0000, 4.0000, 0.6, 1, 1 -PTF_lower66_5_constant = 0.6462, 0.9506, 0.76, 1, 1 -PTF_lower66_5_clay = 0.0001, 0.0029, 0.0009, 1, 1 -PTF_lower66_5_Db = -0.3727, -0.1871, -0.264, 1, 1 -PTF_higher66_5_constant = 0.5358, 1.1232, 0.89, 1, 1 -PTF_higher66_5_clay = -0.0055, 0.0049, -0.001, 1, 1 -PTF_higher66_5_Db = -0.5513, -0.0913, -0.324, 1, 1 -PTF_Ks_constant = -1.2000, -0.2850, -0.585, 1, 1 -PTF_Ks_sand = 0.0060, 0.0260, 0.0125, 1, 1 -PTF_Ks_clay = 0.0030, 0.0130, 0.0063, 1, 1 -PTF_Ks_curveSlope = 60.960, 60.960, 60.960, 0, 1 -rootFractionCoefficient_forest = 0.9700, 0.9850, 0.9750, 1, 1 -rootFractionCoefficient_impervious = 0.9700, 0.9850, 0.9750, 1, 1 -rootFractionCoefficient_pervious = 0.9700, 0.9850, 0.9750, 1, 1 -infiltrationShapeFactor = 1.0000, 4.0000, 1.75, 1, 1 -rootFractionCoefficient_sand = 0.0010, 0.0900, 0.09, 1, 1 -rootFractionCoefficient_clay = 0.9000, 0.9990, 0.98, 1, 1 -FCmin_glob = 0.1000, 0.2000, 0.15, 0, 1 -FCdelta_glob = 0.1000, 0.4000, 0.25, 0, 1 -/ - -! directSealedAreaRunoff -&directRunoff1 -imperviousStorageCapacity = 0.0000, 5.0000, 0.5, 1, 1 -/ - -! potential evapotranspiration -&PETminus1 ! PET is input, LAI driven correction -PET_a_forest = 0.3000, 1.3000, 0.3000, 1, 1 -PET_a_impervious = 0.3000, 1.3000, 0.8000, 1, 1 -PET_a_pervious = 0.3000, 1.3000, 1.3000, 1, 1 -PET_b = 0.0000, 1.5000, 1.5000, 1, 1 -PET_c = -2.000, 0.0000, -0.700, 1, 1 -/ -&PET0 ! PET is input, aspect driven correction -minCorrectionFactorPET = 0.7000, 1.3000, 0.9, 1, 1 -maxCorrectionFactorPET = 0.0000, 0.2000, 0.1, 1, 1 -aspectTresholdPET = 160.00, 200.00, 180.0, 1, 1 -/ -&PET1 ! PET - Hargreaves Samani -minCorrectionFactorPET = 0.7000, 1.3000, 0.9300, 1, 1 -maxCorrectionFactorPET = 0.0000, 0.2000, 0.1900, 1, 1 -aspectTresholdPET = 160.00, 200.00, 171.00, 1, 1 -HargreavesSamaniCoeff = 0.0016, 0.0030, 0.0023, 1, 1 -/ -&PET2 ! PET - Priestley Taylor -PriestleyTaylorCoeff = 0.75, 1.75, 1.1900, 1, 1 -PriestleyTaylorLAIcorr = -0.50, 0.20, 0.0580, 1, 1 -/ -&PET3 ! PET - Penman Monteith -canopyheigth_forest = 15.00, 40.00, 15.000, 1, 1 -canopyheigth_impervious = 0.01, 0.50, 0.0200, 1, 1 -canopyheigth_pervious = 0.10, 5.00, 0.1100, 1, 1 -displacementheight_coeff = 0.50, 0.85, 0.6400, 1, 1 -roughnesslength_momentum_coeff = 0.09, 0.16, 0.0950, 1, 1 -roughnesslength_heat_coeff = 0.07, 0.13, 0.0750, 1, 1 -stomatal_resistance = 10.00, 200.00, 56.000, 1, 1 -/ - -! interflow -&interflow1 -interflowStorageCapacityFactor = 75.000, 200.00, 85.0, 1, 1 -interflowRecession_slope = 0.0000, 10.000, 7.0, 1, 1 -fastInterflowRecession_forest = 1.0000, 3.0000, 1.5, 1, 1 -slowInterflowRecession_Ks = 1.0000, 30.000, 15.0, 1, 1 -exponentSlowInterflow = 0.0500, 0.3000, 0.125, 1, 1 -/ - - -! percolation -&percolation1 -rechargeCoefficient = 0.0000, 50.000, 35.0, 1, 1 -rechargeFactor_karstic = -5.0000, 5.0000, -1.0, 1, 1 -gain_loss_GWreservoir_karstic = 1.0000, 1.0000, 1.0, 0, 1 -/ - -! Muskingum routing parameters with MPR -&routing1 -muskingumTravelTime_constant = 0.3100, 0.3500, 0.325, 1, 1 -muskingumTravelTime_riverLength = 0.0700, 0.0800, 0.075, 1, 1 -muskingumTravelTime_riverSlope = 1.9500, 2.1000, 2.0, 1, 1 -muskingumTravelTime_impervious = 0.0900, 0.1100, 0.1, 1, 1 -muskingumAttenuation_riverSlope = 0.0100, 0.5000, 0.3, 1, 1 -/ - -! adaptive timestep routing -&routing2 -streamflow_celerity = 0.1, 15., 1.5, 0, 1 -/ - -! adaptive timestep routing - varying celerity -&routing3 -slope_factor = 0.1, 100., 30., 0, 1 -/ - -! ground albedo neutrons -! THIS IS WORK IN PROGRESS, DO NOT USE FOR RESEARCH -&neutrons1 -Desilets_N0 = 300.0, 2000.0, 1500.0, 0, 1 -COSMIC_N0 = 300.0, 2000.0, 1500.0, 0, 1 -COSMIC_N1 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_N2 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_alpha0 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_alpha1 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_L30 = 0.01, 10.0, 1.0, 0, 1 -COSMIC_L31 = 0.01, 10.0, 1.0, 0, 1 -/ -! geological parameters (ordering according to file 'geology_classdefinition.txt') -! this parameters are NOT REGIONALIZED yet, i.e. these are and not -&geoparameter -GeoParam(1,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(2,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(3,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(4,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(5,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(6,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(7,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(8,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(9,:) = 1.000, 1000.00, 100.0, 1, 1 -GeoParam(10,:) = 1.000, 1000.00, 100.0, 1, 1 -/ diff --git a/src/common/mo_common_variables.f90 b/src/common/mo_common_variables.f90 index b70319574e7efe1261b25578a6e0efbdb5fb5811..7cfbdea1b7df90c517510188cf7075b92e232e57 100644 --- a/src/common/mo_common_variables.f90 +++ b/src/common/mo_common_variables.f90 @@ -113,8 +113,6 @@ module mo_common_variables end type GridRemapper type(GridRemapper), dimension(:), allocatable, public :: l0_l1_remap ! grid information at morphological level (e.g., dem, fDir) - type(GridRemapper), dimension(:), allocatable, public :: l0_l11_remap ! grid information at morphological level (e.g., dem, fDir) - type(GridRemapper), dimension(:), allocatable, public :: l1_l11_remap ! grid information at morphological level (e.g., dem, fDir) ! ------------------------------------------------------------------- ! L0 DOMAIN description -> diff --git a/src/mHM/mhm_driver.f90 b/src/mHM/mhm_driver.f90 index 14ae35a0c93f80f049f3d82518e56c11ec57cf57..76cb38e8d4b62a78b5341d9beeb0e2856ef0df1d 100644 --- a/src/mHM/mhm_driver.f90 +++ b/src/mHM/mhm_driver.f90 @@ -142,7 +142,6 @@ PROGRAM mhm_driver #endif objective ! objective functions and likelihoods USE mo_optimization, ONLY : optimization -#ifdef MRM2MHM USE mo_mrm_objective_function_runoff, ONLY : & #ifdef MPI single_objective_runoff_master, & @@ -152,7 +151,6 @@ PROGRAM mhm_driver USE mo_mrm_init, ONLY : mrm_init, mrm_configuration USE mo_mrm_write, only : mrm_write -#endif !$ USE omp_lib, ONLY : OMP_GET_NUM_THREADS ! OpenMP routines #ifdef MPI USE mpi_f08 @@ -178,9 +176,7 @@ PROGRAM mhm_driver character(len=255) :: cur_work_dir, new_work_dir -#ifdef MRM2MHM logical :: ReadLatLon -#endif #ifdef MPI integer :: ierror @@ -249,11 +245,9 @@ PROGRAM mhm_driver call common_mHM_mRM_read_config(file_namelist_mhm, unamelist_mhm) call mhm_read_config(file_namelist_mhm, unamelist_mhm) call check_optimization_settings() -#ifdef MRM2MHM mrm_coupling_mode = 2_i4 call mrm_configuration(file_namelist_mhm, unamelist_mhm, & file_namelist_mhm_param, unamelist_mhm_param, ReadLatLon) -#endif call message() call message('# of domains: ', trim(num2str(domainMeta%overallNumberOfDomains))) call message() @@ -362,15 +356,11 @@ PROGRAM mhm_driver call timer_stop(itimer) call message(' in ', trim(num2str(timer_get(itimer), '(F9.3)')), ' seconds.') -#ifdef MRM2MHM ! -------------------------------------------------------------------------- ! READ and INITIALISE mRM ROUTING ! -------------------------------------------------------------------------- if (processMatrix(8, 1) > 0) call mrm_init(file_namelist_mhm, unamelist_mhm, & file_namelist_mhm_param, unamelist_mhm_param, ReadLatLon=ReadLatLon) -#else - mrm_coupling_mode = -1_i4 -#endif !this call may be moved to another position as it writes the master config out file for all domains call write_configfile() @@ -387,7 +377,6 @@ PROGRAM mhm_driver eval => mhm_eval select case(opti_function) -#ifdef MRM2MHM case(1 : 9, 14, 31 : 32) ! call optimization against only runoff (no other variables) obj_func => single_objective_runoff @@ -404,7 +393,6 @@ PROGRAM mhm_driver end if #else call optimization(eval, obj_func, dirConfigOut, funcBest, maskpara) -#endif #endif case(10 : 13, 15, 17, 27, 28, 29, 30, 33) ! call optimization for other variables @@ -477,13 +465,11 @@ PROGRAM mhm_driver call message(' in ', trim(num2str(timer_get(itimer), '(F9.3)')), ' seconds.') end if -#ifdef MRM2MHM ! -------------------------------------------------------------------------- ! WRITE RUNOFF (INCLUDING RESTART FILES, has to be called after mHM restart ! files are written) ! -------------------------------------------------------------------------- if (processMatrix(8, 1) > 0) call mrm_write() -#endif #ifdef MPI end if diff --git a/src/mHM/mo_mhm_eval.f90 b/src/mHM/mo_mhm_eval.f90 index 94f43e2cb2f18bf2d821d792323eb588c189a9c8..1a23aeea6b2825cf533e0d74ba14f8d57889b1ab 100644 --- a/src/mHM/mo_mhm_eval.f90 +++ b/src/mHM/mo_mhm_eval.f90 @@ -117,7 +117,6 @@ CONTAINS L1_wiltingPoint, nSoilHorizons_mHM use mo_restart, only : read_restart_states use mo_write_fluxes_states, only : OutputDataset -#ifdef MRM2MHM use mo_common_constants, only : HourSecs use mo_common_mHM_mRM_variables, only : resolutionRouting use mo_common_variables, only : resolutionHydrology @@ -134,7 +133,6 @@ CONTAINS use mo_mrm_write, only : mrm_write_output_fluxes use mo_utils, only : ge use mo_mrm_river_head, only: calc_river_head, avg_and_write_timestep -#endif #ifdef pgiFortran154 use mo_write_fluxes_states, only : newOutputDataset #endif @@ -198,7 +196,6 @@ CONTAINS ! calculations type(datetimeinfo) :: domainDateTime -#ifdef MRM2MHM integer(i4) :: jj ! discharge timestep @@ -231,7 +228,6 @@ CONTAINS ! flag for performing routing logical :: do_rout -#endif integer(i4) :: gg ! number of domains simulated in this mhm_eval run. Depends on opti_function @@ -272,7 +268,6 @@ CONTAINS call variables_default_init() call mpr_eval(parameterset) -#ifdef MRM2MHM if (processMatrix(8, 1) > 0) then !------------------------------------------- ! L11 ROUTING STATE VARIABLES, FLUXES AND @@ -280,7 +275,6 @@ CONTAINS !------------------------------------------- call variables_default_init_routing() end if -#endif else do ii = 1, nDomains if (optimize .and. present(opti_domain_indices)) then @@ -322,7 +316,6 @@ CONTAINS s1 = level1(iDomain)%iStart e1 = level1(iDomain)%iEnd -#ifdef MRM2MHM if (domainMeta%doRouting(iDomain)) then ! ---------------------------------------- ! initialize factor between routing resolution and hydrologic model resolution @@ -354,7 +347,6 @@ CONTAINS call riv_temp_pcs%alloc_lateral(nCells) end if end if -#endif ! init datetime variable call domainDateTime%init(iDomain) @@ -478,7 +470,6 @@ CONTAINS L1_wiltingPoint(s1 : e1, :, domainDateTime%yId)) ! INOUT E1 ! call mRM routing -#ifdef MRM2MHM if (domainMeta%doRouting(iDomain)) then ! set discharge timestep iDischargeTS = ceiling(real(tt, dp) / real(nTstepDay, dp)) @@ -653,8 +644,6 @@ CONTAINS if (tsRoutFactor .lt. 1._dp .and. riv_temp_pcs%active ) call riv_temp_pcs%reset_timestep() end if end if -#endif - ! output only for evaluation period domainDateTime%tIndex_out = (tt - warmingDays(iDomain) * nTstepDay) ! tt if write out of warming period @@ -662,7 +651,6 @@ CONTAINS call domainDateTime%increment() if (.not. optimize) then -#ifdef MRM2MHM if (any(outputFlxState_mrm)) then call mrm_write_output_fluxes( & iDomain, & ! Domain id @@ -673,7 +661,6 @@ CONTAINS L11_qmod(s11 : e11) & ! output variables ) end if -#endif if ((any(outputFlxState)) .and. (domainDateTime%tIndex_out > 0_i4)) then @@ -822,21 +809,18 @@ CONTAINS end do TimeLoop !<< TIME STEPS LOOP if (allocated(InflowDischarge)) deallocate(InflowDischarge) -#ifdef MRM2MHM if (domainMeta%doRouting(iDomain)) then ! clean runoff variable deallocate(RunToRout) if ( riv_temp_pcs%active ) call riv_temp_pcs%dealloc_lateral() end if -#endif end do DomainLoop !<< Domain LOOP -#ifdef MRM2MHM + ! ========================================================================= ! SET RUNOFF OUTPUT VARIABLE ! ========================================================================= if (present(runoff) .and. (processMatrix(8, 1) > 0)) runoff = mRM_runoff -#endif end SUBROUTINE mhm_eval diff --git a/src/mHM/mo_objective_function.f90 b/src/mHM/mo_objective_function.f90 index 727189ce52d6649f55348ea4cc6bc53b980f7b8a..f89e4b657fa637ac46ff12a2f51139d42d6f4529 100644 --- a/src/mHM/mo_objective_function.f90 +++ b/src/mHM/mo_objective_function.f90 @@ -384,7 +384,7 @@ CONTAINS do ! a do loop without condition runs until exit call MPI_Recv(do_obj_loop, 1, MPI_LOGICAL, 0, 0, domainMeta%comMaster, status, ierror) - + if (.not. do_obj_loop) exit if (present(arg1) .or. present(arg2) .or. present(arg3)) then @@ -635,7 +635,7 @@ CONTAINS !> over all domains. The integer array domainMeta%optidata decides which !> indices to use. Therefore the array is split into disjunct subsets, and, !> if chosen wisely in the namelist, also covers all domains. - !> + !> !> With this the eval calls sum up in a way that for each domain eval was !> called at most once, but for different opti_data. @@ -656,9 +656,7 @@ CONTAINS use mo_message, only : message use mo_moment, only : average use mo_string_utils, only : num2str -#ifdef MRM2MHM use mo_mrm_objective_function_runoff, only : extract_runoff -#endif implicit none @@ -680,7 +678,6 @@ CONTAINS real(dp), parameter :: onesixth = 1.0_dp / 6.0_dp #endif -#ifdef MRM2MHM !> modelled runoff for a given parameter set ! dim1=nTimeSteps, dim2=nGauges real(dp), allocatable, dimension(:, :) :: runoff @@ -704,7 +701,6 @@ CONTAINS !> number of q domains integer(i4) :: nQDomains -#endif !> number of et domains integer(i4) :: nEtDomains @@ -720,7 +716,7 @@ CONTAINS !> index array of TWS domains integer(i4), dimension(:), allocatable :: opti_domain_indices_TWS - + !> index array of TWS and ET domains (providing both) integer(i4), dimension(:), allocatable :: opti_domain_indices_ET_TWS @@ -737,7 +733,7 @@ CONTAINS type(optidata_sim), dimension(:), allocatable :: twsaOptiSim real(dp) :: kge_tws - + real(dp) :: kge_et integer(i4) :: numberOfSummands @@ -755,7 +751,7 @@ CONTAINS ! eval runs to get simulated output for et and tws ! before each eval call we generate an index list of the domains for which ! eval should be called. Read details for further information - call init_indexarray_for_opti_data(domainMeta, 6, nEtTwsDomains, opti_domain_indices_ET_TWS) + call init_indexarray_for_opti_data(domainMeta, 6, nEtTwsDomains, opti_domain_indices_ET_TWS) if (nEtTwsDomains > 0) then allocate( etOptiSim(domainMeta%nDomains)) allocate(twsOptiSim(domainMeta%nDomains)) @@ -816,7 +812,7 @@ CONTAINS ! write(0,*) 'nTwsDomains, kge_tws', nTwsDomains, kge_tws end if objective_q_et_tws_kge_catchment_avg(2) = kge_tws - + !-------------------------------------------- ! ET !-------------------------------------------- @@ -852,10 +848,7 @@ CONTAINS ! ToDo: The arrays for qTin, qTout, will be rewritten in the other calls when ! Q is not called last. Change that for more flexibility call init_indexarray_for_opti_data(domainMeta, 1, nQDomains, opti_domain_indices_Q) -#ifndef MRM2MHM - call message('***ERROR: objective_q_et_tws_kge_catchment_avg: missing routing module for optimization') - stop 1 -#else + if (nQDomains > 0) then call eval(parameterset, opti_domain_indices = opti_domain_indices_Q, runoff = runoff) nGaugesTotal = size(runoff, dim = 2) @@ -872,7 +865,6 @@ CONTAINS ! write(0,*) 'nQDomains, kge_q', nQDomains, kge_q end if objective_q_et_tws_kge_catchment_avg(1) = kge_q -#endif objective_q_et_tws_kge_catchment_avg(4) = real(numberOfSummands, dp) @@ -1415,10 +1407,8 @@ CONTAINS use mo_standard_score, only : classified_standard_score use mo_string_utils, only : num2str use mo_temporal_aggregation, only : day2mon_average -#ifdef MRM2MHM use mo_errormeasures, only : kge use mo_mrm_objective_function_runoff, only : extract_runoff -#endif implicit none @@ -1466,7 +1456,6 @@ CONTAINS ! obj. functions real(dp) :: rmse_tws_avg, kge_q_avg -#ifdef MRM2MHM integer(i4) :: nGaugesTotal ! aggregated simulated runoff @@ -1483,7 +1472,6 @@ CONTAINS ! gauges counter integer(i4) :: gg -#endif ! obtain hourly values of runoff and tws: allocate(twsOptiSim(domainMeta%nDomains)) @@ -1563,7 +1551,6 @@ CONTAINS !! RUNOFF !-------------------------------------------- kge_q_avg = 0_dp -#ifdef MRM2MHM nGaugesTotal = size(runoff, dim = 2) allocate(kge_q(nGaugesTotal)) kge_q(:) = nodata_dp @@ -1589,10 +1576,6 @@ CONTAINS kge_q_avg = sum(kge_q(:), abs(kge_q - nodata_dp) .gt. eps_dp) / & real(count(abs(kge_q - nodata_dp) .gt. eps_dp), dp) deallocate(kge_q) -#else - call message('***ERROR: objective_kge_q_rmse_tws: missing routing module for optimization') - stop 1 -#endif ! objective_kge_q_rmse_tws = rmse_tws_avg * (1._dp - kge_q_avg) @@ -1904,10 +1887,8 @@ CONTAINS use mo_message, only : message use mo_moment, only : correlation use mo_string_utils, only : num2str -#ifdef MRM2MHM use mo_errormeasures, only : kge use mo_mrm_objective_function_runoff, only : extract_runoff -#endif implicit none @@ -1945,7 +1926,6 @@ CONTAINS real(dp), parameter :: onesixth = 1.0_dp / 6.0_dp -#ifdef MRM2MHM ! gauges counter integer(i4) :: gg @@ -1959,7 +1939,6 @@ CONTAINS ! mask for measured runoff logical, dimension(:), allocatable :: runoff_obs_mask -#endif ! run mHM allocate(smOptiSim(domainMeta%nDomains)) @@ -2018,7 +1997,6 @@ CONTAINS ! RUNOFF ! ----------------------------- objective_kge = 0.0_dp -#ifdef MRM2MHM nGaugesTotal = size(runoff, dim = 2) do gg = 1, nGaugesTotal @@ -2037,11 +2015,6 @@ CONTAINS ! compromise solution - sixth root objective_kge = objective_kge**onesixth -#else - call message('***ERROR: objective_kge_q_rmse_tws: missing routing module for optimization') - stop -#endif - ! equal weighted compromise objective functions for discharge and soilmoisture ! ToDo: why do we use the sixth root of of objective_sm and objective_kge ! only to take the power to 6 here again, when we never need the @@ -2094,9 +2067,7 @@ CONTAINS use mo_global_variables, only : L1_etObs use mo_message, only : message use mo_string_utils, only : num2str -#ifdef MRM2MHM use mo_mrm_objective_function_runoff, only : extract_runoff -#endif implicit none @@ -2134,7 +2105,6 @@ CONTAINS real(dp), parameter :: onesixth = 1.0_dp / 6.0_dp -#ifdef MRM2MHM ! gauges counter integer(i4) :: gg @@ -2148,7 +2118,6 @@ CONTAINS ! mask for measured runoff logical, dimension(:), allocatable :: runoff_obs_mask -#endif ! run mHM allocate(etOptiSim(domainMeta%nDomains)) @@ -2208,7 +2177,6 @@ CONTAINS ! RUNOFF ! ----------------------------- objective_q = 0.0_dp -#ifdef MRM2MHM nGaugesTotal = size(runoff, dim = 2) do gg = 1, nGaugesTotal @@ -2227,11 +2195,6 @@ CONTAINS ! compromise solution - sixth root objective_q = objective_q**onesixth -#else - call message('***ERROR: objective_kge_q_et: missing routing module for optimization') - stop -#endif - ! equal weighted compromise objective functions for discharge and soilmoisture ! ToDo: why do we use the sixth root of of objective_sm and objective_kge ! only to take the power to 6 here again, when we never need the @@ -2287,10 +2250,8 @@ CONTAINS use mo_standard_score, only : classified_standard_score use mo_string_utils, only : num2str use mo_temporal_aggregation, only : day2mon_average -#ifdef MRM2MHM use mo_errormeasures, only : kge use mo_mrm_objective_function_runoff, only : extract_runoff -#endif implicit none @@ -2346,7 +2307,6 @@ CONTAINS ! mask for valid et catchment avg time steps logical, dimension(:), allocatable :: mask_times -#ifdef MRM2MHM ! rmse_et(domainMeta%nDomains) real(dp), dimension(:), allocatable :: kge_q @@ -2363,7 +2323,6 @@ CONTAINS ! mask for measured runoff logical, dimension(:), allocatable :: runoff_obs_mask -#endif ! obtain simulation values of runoff (hourly) and ET ! for ET only valid cells (domains concatenated) @@ -2494,7 +2453,6 @@ CONTAINS !! RUNOFF !-------------------------------------------- kge_q_avg = 0_dp -#ifdef MRM2MHM nGaugesTotal = size(runoff, dim = 2) allocate(kge_q(nGaugesTotal)) kge_q(:) = nodata_dp @@ -2522,10 +2480,6 @@ CONTAINS kge_q_avg = sum(kge_q(:), abs(kge_q - nodata_dp) .gt. eps_dp) / & real(count(abs(kge_q - nodata_dp) .gt. eps_dp), dp) deallocate(kge_q) -#else - call message('***ERROR: objective_kge_q_rmse_et: missing routing module for optimization') - stop -#endif ! objective_kge_q_rmse_et = rmse_et_avg * (1._dp - kge_q_avg) @@ -2643,7 +2597,7 @@ CONTAINS end do end subroutine create_domain_avg_et - + subroutine convert_tws_to_twsa(twsOptiSim, L1_twsaObs, twsaOptiSim) use mo_optimization_types, only : optidata_sim, optidata use mo_moment, only : average diff --git a/src/mHM/mo_write_ascii.f90 b/src/mHM/mo_write_ascii.f90 index 8da567ff1bb616531b158d0404d9b93ba32ac0fc..d65de3c653cbcce3cda4b1d58334a58be00553f7 100644 --- a/src/mHM/mo_write_ascii.f90 +++ b/src/mHM/mo_write_ascii.f90 @@ -97,14 +97,12 @@ CONTAINS use mo_message, only : message use mo_string_utils, only : num2str use mo_os, only : path_isdir -#ifdef MRM2MHM use mo_common_constants, only : nodata_dp use mo_common_mHM_mRM_variables, only : resolutionRouting use mo_common_variables, only : processMatrix use mo_mrm_global_variables, only : InflowGauge, L11_fromN, L11_label, L11_length, L11_netPerm, L11_rOrder, & L11_slope, L11_toN, L1_L11_ID, dirGauges, gauge, level11, nGaugesTotal, & nGaugesLocal, nInflowGaugesTotal, L11_nOutlets -#endif implicit none @@ -134,17 +132,14 @@ CONTAINS write(uconfig, 201) ' M A I N mHM C O N F I G U R A T I O N I N F O R M A T I O N ' write(uconfig, 100) write(uconfig, 103) 'Number of domain ', domainMeta%overallNumberOfDomains -#ifdef MRM2MHM if (processMatrix(8, 1) > 0) then write(uconfig, 103) 'Total No. of gauges ', nGaugesTotal end if -#endif write(uconfig, 103) 'Time Step [h] ', timeStep do iDomain = 1, domainMeta%nDomains domainID = domainMeta%indices(iDomain) write(uconfig, 103) 'Domain ', domainID, 'No. of cells L0 ', level0(domainMeta%L0DataFrom(iDomain))%nCells write(uconfig, 103) 'Domain ', domainID, 'No. of cells L1 ', level1(iDomain)%nCells -#ifdef MRM2MHM if (domainMeta%doRouting(iDomain)) then write(uconfig, 103) 'Total No. of nodes ', level11(iDomain)%nCells write(uconfig, 103) 'Total No. of reaches ', level11(iDomain)%nCells - 1 @@ -153,24 +148,18 @@ CONTAINS write(uconfig, 103) 'Total No. of gauges ', nGaugesTotal end if end if -#endif select case (iFlag_cordinate_sys) case (0) write(uconfig, 301) 'Domain ', domainID, ' Hydrology Resolution [m] ', resolutionHydrology(iDomain) -#ifdef MRM2MHM if (domainMeta%doRouting(iDomain)) then write(uconfig, 301) 'Domain ', domainID, ' Routing Resolution [m] ', resolutionRouting(iDomain) end if -#endif - case(1) + case(1) write(uconfig, 302) 'Domain ', domainID, ' Hydrology Resolution [o] ', resolutionHydrology(iDomain) -#ifdef MRM2MHM if (domainMeta%doRouting(iDomain)) then write(uconfig, 302) 'Domain ', domainID, ' Routing Resolution [o] ', resolutionRouting(iDomain) end if -#endif - end select end do write(uconfig, 126) 'Flag READ restart ', read_restart @@ -223,7 +212,6 @@ CONTAINS i, global_parameters(i, 1), global_parameters(i, 2), global_parameters(i, 3), & trim(adjustl(global_parameters_name(i))) end do -#ifdef MRM2MHM ! domain runoff data if (processMatrix(8, 1) > 0) then write(uconfig, 202) ' Domain Runoff Data ' @@ -250,7 +238,7 @@ CONTAINS end if end do end if -#endif + ! domain config write(uconfig, 218) 'Domain-wise Configuration' do iDomain = 1, domainMeta%nDomains @@ -265,18 +253,15 @@ CONTAINS write(uconfig, 224) 'Directory to morphological input ', dirMorpho(iDomain) write(uconfig, 224) 'Directory to land cover input ', dirLCover(iDomain) -#ifdef MRM2MHM if (domainMeta%doRouting(iDomain)) then write(uconfig, 224) 'Directory to gauging station input ', dirGauges(iDomain) end if -#endif write(uconfig, 224) 'Directory to precipitation input ', dirPrecipitation(iDomain) write(uconfig, 224) 'Directory to temperature input ', dirTemperature(iDomain) write(uconfig, 224) 'Directory to reference ET input ', dirReferenceET(iDomain) write(uconfig, 224) 'Directory to write output by default ', dirOut(iDomain) write(uconfig, 224) 'File to write mHM output when restarted ', mhmFileRestartOut(iDomain) -#ifdef MRM2MHM if (domainMeta%doRouting(iDomain)) then write(uconfig, 102) 'River Network (Routing level)' write(uconfig, 100) 'Label 0 = intermediate draining cell ' @@ -354,7 +339,6 @@ CONTAINS end do write(uconfig, 114) ' Total[km2]', sum(level1(iDomain)%CellArea) * 1.0E-6_dp end if -#endif ! end do @@ -433,7 +417,7 @@ CONTAINS ! Modifications: ! Rohini Kumar Aug 2013 - change in structure of the code including call statements - ! Juliane Mai Oct 2013 - clear parameter names added + ! Juliane Mai Oct 2013 - clear parameter names added ! - double precision written ! Robert Schweppe Jun 2018 - refactoring and reformatting ! M. Cuneyd Demirel, Simon Stisen Jun 2020 - added Feddes and FC dependency on root fraction coefficient processCase(3) = 4 diff --git a/src/mRM/mo_mrm_eval.f90 b/src/mRM/mo_mrm_eval.f90 deleted file mode 100644 index 9c898b299b93631f8bb33bfadd23fe9402bc64ce..0000000000000000000000000000000000000000 --- a/src/mRM/mo_mrm_eval.f90 +++ /dev/null @@ -1,373 +0,0 @@ -!> \file mo_mrm_eval.f90 - -!> \brief Runs mrm with a specific parameter set and returns required variables, e.g. runoff. - -!> \details Runs mrm with a specific parameter set and returns required variables, e.g. runoff. - -!> \authors Stephan Thober - -!> \date Sep 2015 - -! Modifications: - -module mo_mrm_eval - - implicit none - - public :: mrm_eval - -contains - - ! ------------------------------------------------------------------ - - ! NAME - ! mrm_eval - - ! PURPOSE - !> \brief Runs mrm with a specific parameter set and returns required variables, e.g. runoff. - - !> \details Runs mrm with a specific parameter set and returns required variables, e.g. runoff. - - ! INTENT(IN) - !> \param[in] "real(dp), dimension(:) :: parameterset" a set of global parameter (gamma) to run mHM, DIMENSION - !> [no. of global_Parameters] - - ! INTENT(OUT), OPTIONAL - !> \param[out] "real(dp), dimension(:, :), optional :: runoff" returns runoff time series, DIMENSION - !> [nTimeSteps, nGaugesTotal] - !> \param[out] "real(dp), dimension(:, :), optional :: sm_opti" dim1=ncells, dim2=time - !> \param[out] "real(dp), dimension(:, :), optional :: neutrons_opti" dim1=ncells, dim2=time - !> \param[out] "real(dp), dimension(:, :), optional :: et_opti" dim1=ncells, dim2=time - !> \param[out] "real(dp), dimension(:, :), optional :: tws_opti" dim1=ncells, dim2=time - - ! HISTORY - !> \authors Stephan Thober - - !> \date Sep 2015 - - ! Modifications: - ! Stephan Thober Nov 2016 - implemented second routing process i.e. adaptive timestep - ! Robert Schweppe Jun 2018 - refactoring and reformatting - - subroutine mrm_eval(parameterset, opti_domain_indices, runoff, smOptiSim, neutronsOptiSim, etOptiSim, twsOptiSim) - - use mo_optimization_types, only : optidata_sim - use mo_common_datetime_type, only : datetimeinfo - use mo_common_constants, only : HourSecs - use mo_common_mHM_mRM_variables, only : LCYearId, mrmFileRestartIn, nTStepDay, optimize,& - read_restart, resolutionRouting, simPer, & - timestep, warmingDays - use mo_common_variables, only : level1, domainMeta, processMatrix, resolutionHydrology - use mo_julian, only : caldat, julday - use mo_kind, only : dp, i4 - use mo_message, only : message - use mo_mrm_global_variables, only : InflowGauge, & - L11_C1, L11_C2, L11_L1_ID, L11_TSrout, L11_fromN, L11_length, L11_nLinkFracFPimp, & - L11_nOutlets, L11_netPerm, L11_qMod, L11_qOUT, L11_qTIN, L11_qTR, L11_slope, & - L11_toN, L1_L11_ID, L1_total_runoff_in, domain_mrm, level11, mRM_runoff, & - outputFlxState_mrm, timeStep_model_outputs_mrm, gw_coupling, L0_river_head_mon_sum - use mo_mrm_init, only : variables_default_init_routing - use mo_mrm_mpr, only : mrm_update_param - use mo_mrm_restart, only : mrm_read_restart_states - use mo_mrm_routing, only : mrm_routing - use mo_mrm_river_head, only : calc_river_head, avg_and_write_timestep - use mo_mrm_write, only : mrm_write_output_fluxes - use mo_utils, only : ge - - implicit none - - ! a set of global parameter (gamma) to run mHM, DIMENSION [no. of global_Parameters] - real(dp), dimension(:), intent(in) :: parameterset - - integer(i4), dimension(:), optional, intent(in) :: opti_domain_indices - ! returns runoff time series, DIMENSION [nTimeSteps, nGaugesTotal] - real(dp), dimension(:, :), allocatable, optional, intent(out) :: runoff - - ! returns soil moisture time series for all grid cells (of multiple Domains concatenated),DIMENSION [nCells, - ! nTimeSteps] - type(optidata_sim), dimension(:), optional, intent(inout) :: smOptiSim - - ! dim1=ncells, dim2=time - type(optidata_sim), dimension(:), optional, intent(inout) :: neutronsOptiSim - - ! returns evapotranspiration time series for all grid cells (of multiple Domains concatenated),DIMENSION [nCells, - ! nTimeSteps] - type(optidata_sim), dimension(:), optional, intent(inout) :: etOptiSim - - ! returns tws time series for all grid cells (of multiple Domains concatenated),DIMENSION [nCells, - ! nTimeSteps] - type(optidata_sim), dimension(:), optional, intent(inout) :: twsOptiSim - - integer(i4) :: domainID, iDomain, nDomains, ii - - integer(i4) :: jj - - integer(i4) :: tt - - type(datetimeinfo) :: domainDateTime - - ! Land cover year ID - integer(i4) :: Lcover_yID - - ! start and end index at level 1 for current domain - integer(i4) :: s1, e1 - - ! start and end index at L11 - integer(i4) :: s11, e11 - - ! discharge timestep - integer(i4) :: iDischargeTS - - ! factor between routing and hydrological modelling resolution - real(dp) :: tsRoutFactor - - ! factor between routing and hydrological modelling resolution (temporary variable) - real(dp) :: tsRoutFactorIn - - ! timestep of runoff to rout [h] - ! - identical to timestep of input if tsRoutFactor is less than 1 - ! - tsRoutFactor * timestep if tsRoutFactor is greater than 1 - integer(i4) :: timestep_rout - - ! Runoff that is input for routing - real(dp), allocatable, dimension(:) :: RunToRout - - ! inflowing discharge - real(dp), allocatable, dimension(:) :: InflowDischarge - - logical, pointer, dimension(:, :) :: mask11 - - ! flag for performing routing - logical :: do_rout - - if (optimize .and. present(opti_domain_indices)) then - nDomains = size(opti_domain_indices) - else - nDomains = domainMeta%nDomains - end if - - if (present(smOptiSim) .or. present(twsOptiSim) .or. present(neutronsOptiSim) .or. present(etOptiSim)) then - call message("Error during initialization of mrm_eval, incorrect call from optimization routine.") - stop 1 - end if - if (.not. read_restart) then - !------------------------------------------- - ! L11 ROUTING STATE VARIABLES, FLUXES AND - ! PARAMETERS - !------------------------------------------- - call variables_default_init_routing() - end if - - ! ---------------------------------------- - ! initialize factor between routing resolution and hydrologic model resolution - ! ---------------------------------------- - tsRoutFactor = 1_i4 - allocate(InflowDischarge(size(InflowGauge%Q, dim = 2))) - InflowDischarge = 0._dp - ! ---------------------------------------- - ! loop over domains - ! ---------------------------------------- - do ii = 1, nDomains - if (optimize .and. present(opti_domain_indices)) then - iDomain = opti_domain_indices(ii) - else - iDomain = ii - end if - domainID = domainMeta%indices(iDomain) - ! read states from restart - if (read_restart) call mrm_read_restart_states(iDomain, domainID, mrmFileRestartIn(iDomain)) - ! - ! get domain information at L11 and L1 if routing is activated - s1 = level1(iDomain)%iStart - e1 = level1(iDomain)%iEnd - s11 = level11(iDomain)%iStart - e11 = level11(iDomain)%iEnd - mask11 => level11(iDomain)%mask - ! - ! initialize routing parameters (has to be called only for Routing option 2) - if ((processMatrix(8, 1) .eq. 2) .or. (processMatrix(8, 1) .eq. 3)) & - call mrm_update_param(iDomain, parameterset(processMatrix(8, 3) - processMatrix(8, 2) + 1 : processMatrix(8, 3))) - ! initialize variable for runoff for routing - allocate(RunToRout(e1 - s1 + 1)) - RunToRout = 0._dp - - ! calculate NtimeSteps for this domain - call domainDateTime%init(iDomain) - ! ---------------------------------------- - ! loop over time - ! ---------------------------------------- - do tt = 1, domainDateTime%nTimeSteps - ! set discharge timestep - iDischargeTS = ceiling(real(tt, dp) / real(NTSTEPDAY, dp)) - ! ------------------------------------------------------------------- - ! PERFORM ROUTING - ! ------------------------------------------------------------------- - ! - ! set input variables for routing - if (processMatrix(8, 1) .eq. 1) then - ! >>> - ! >>> original Muskingum routing, executed every time - ! >>> - ! - ! initialize land cover year id - Lcover_yID = LCyearId(domainDateTime%year, iDomain) - ! - do_rout = .True. - L11_tsRout(iDomain) = (timestep * HourSecs) - tsRoutFactorIn = 1._dp - timestep_rout = timestep - RunToRout = L1_total_runoff_in(s1 : e1, tt) ! runoff [mm TST-1] mm per timestep - InflowDischarge = InflowGauge%Q(iDischargeTS, :) ! inflow discharge in [m3 s-1] - ! - else if ((processMatrix(8, 1) .eq. 2) .or. & - (processMatrix(8, 1) .eq. 3)) then - ! >>> - ! >>> adaptive timestep - ! >>> - ! - ! set dummy lcover_yID - Lcover_yID = 1_i4 - ! - do_rout = .False. - ! calculate factor - tsRoutFactor = L11_tsRout(iDomain) / (timestep * HourSecs) - ! print *, 'routing factor: ', tsRoutFactor - ! prepare routing call - if (tsRoutFactor .lt. 1._dp) then - ! ---------------------------------------------------------------- - ! routing timesteps are shorter than hydrologic time steps - ! ---------------------------------------------------------------- - ! set all input variables - tsRoutFactorIn = tsRoutFactor - RunToRout = L1_total_runoff_in(s1 : e1, tt) ! runoff [mm TST-1] mm per timestep - InflowDischarge = InflowGauge%Q(iDischargeTS, :) ! inflow discharge in [m3 s-1] - timestep_rout = timestep - do_rout = .True. - else - ! ---------------------------------------------------------------- - ! routing timesteps are longer than hydrologic time steps - ! ---------------------------------------------------------------- - ! set all input variables - tsRoutFactorIn = tsRoutFactor - RunToRout = RunToRout + L1_total_runoff_in(s1 : e1, tt) - InflowDischarge = InflowDischarge + InflowGauge%Q(iDischargeTS, :) - ! reset tsRoutFactorIn if last period did not cover full period - if ((tt == domainDateTime%nTimeSteps) .and. (mod(tt, nint(tsRoutFactorIn)) /= 0_i4)) & - tsRoutFactorIn = mod(tt, nint(tsRoutFactorIn)) - if ((mod(tt, nint(tsRoutFactorIn)) == 0_i4) .or. (tt == domainDateTime%nTimeSteps)) then - InflowDischarge = InflowDischarge / tsRoutFactorIn - timestep_rout = nint(real(timestep, dp) * tsRoutFactorIn) - do_rout = .True. - end if - end if - end if - ! ------------------------------------------------------------------- - ! execute routing - ! ------------------------------------------------------------------- - if (do_rout) call mRM_routing(& - ! general INPUT variables - read_restart, & - processMatrix(8, 1), & ! parse process Case to be used - parameterset, & ! routing par. - RunToRout, & ! runoff [mm TST-1] mm per timestep old: L1_total_runoff_in(s1:e1, tt), & - level1(iDomain)%CellArea * 1.E-6_dp, & - L1_L11_Id(s1 : e1), & - level11(iDomain)%CellArea * 1.E-6_dp, & - L11_L1_Id(s11 : e11), & - L11_netPerm(s11 : e11), & ! routing order at L11 - L11_fromN(s11 : e11), & ! link source at L11 - L11_toN(s11 : e11), & ! link target at L11 - L11_nOutlets(iDomain), & ! number of outlets - timestep_rout, & ! timestep of runoff to rout [h] - tsRoutFactorIn, & ! Factor between routing and hydrologic resolution - level11(iDomain)%nCells, & ! number of Nodes - domain_mrm(iDomain)%nInflowGauges, & - domain_mrm(iDomain)%InflowGaugeIndexList(:), & - domain_mrm(iDomain)%InflowGaugeHeadwater(:), & - domain_mrm(iDomain)%InflowGaugeNodeList(:), & - InflowDischarge, & - domain_mrm(iDomain)%nGauges, & - domain_mrm(iDomain)%gaugeIndexList(:), & - domain_mrm(iDomain)%gaugeNodeList(:), & - ge(resolutionRouting(iDomain), resolutionHydrology(iDomain)), & - ! original routing specific input variables - L11_length(s11 : e11 - 1), & ! link length - L11_slope(s11 : e11 - 1), & - L11_nLinkFracFPimp(s11 : e11, Lcover_yID), & ! fraction of impervious layer at L11 scale - ! general INPUT/OUTPUT variables - L11_C1(s11 : e11), & ! first muskingum parameter - L11_C2(s11 : e11), & ! second muskigum parameter - L11_qOUT(s11 : e11), & ! routed runoff flowing out of L11 cell - L11_qTIN(s11 : e11, :), & ! inflow water into the reach at L11 - L11_qTR(s11 : e11, :), & ! - L11_qMod(s11 : e11), & - mRM_runoff(tt, :) & - ) - - ! ------------------------------------------------------------------- - ! groundwater coupling - ! ------------------------------------------------------------------- - if (gw_coupling) then - call calc_river_head(iDomain, L11_Qmod, L0_river_head_mon_sum) - if (domainDateTime%is_new_month) then - call avg_and_write_timestep(iDomain, tt, L0_river_head_mon_sum) - end if - end if - ! ------------------------------------------------------------------- - ! reset variables - ! ------------------------------------------------------------------- - if (processMatrix(8, 1) .eq. 1) then - ! reset Input variables - InflowDischarge = 0._dp - RunToRout = 0._dp - else if ((processMatrix(8, 1) .eq. 2) .or. (processMatrix(8, 1) .eq. 3)) then - if ((.not. (tsRoutFactorIn .lt. 1._dp)) .and. do_rout) then - do jj = 1, nint(tsRoutFactorIn) - mRM_runoff(tt - jj + 1, :) = mRM_runoff(tt, :) - end do - ! reset Input variables - InflowDischarge = 0._dp - RunToRout = 0._dp - end if - end if - ! ------------------------------------------------------------------- - ! INCREMENT TIME - ! ------------------------------------------------------------------- - ! output only for evaluation period - domainDateTime%tIndex_out = (tt - warmingDays(iDomain) * nTstepDay) ! tt if write out of warming period - - call domainDateTime%increment() - ! ------------------------------------------------------------------- - ! WRITE OUTPUT - ! ------------------------------------------------------------------- - if (.not. optimize .and. any(outputFlxState_mrm)) then - call mrm_write_output_fluxes(& - ! domain id - iDomain, & - ! nCells in domain - level11(iDomain)%nCells, & - ! output specification - timeStep_model_outputs_mrm, & - ! time specification - domainDateTime, & - tt, timestep, & - ! mask specification - mask11, & - ! output variables - L11_qmod(s11 : e11)) - end if - end do - ! clean runoff variable - deallocate(RunToRout) - end do - - ! ========================================================================= - ! SET RUNOFF OUTPUT VARIABLE IF REQUIRED - ! ========================================================================= - if (present(runoff)) runoff = mRM_runoff - - ! free memory - deallocate(InflowDischarge) - end subroutine mrm_eval - -end module mo_mrm_eval diff --git a/src/mRM/mo_mrm_read_config.f90 b/src/mRM/mo_mrm_read_config.f90 index d04d28e9e2599fe9955cf4e480151bfdda0cb566..d992d6b7ebe75e526433d6ad7f77a7bf4c2a952c 100644 --- a/src/mRM/mo_mrm_read_config.f90 +++ b/src/mRM/mo_mrm_read_config.f90 @@ -421,9 +421,6 @@ contains use mo_common_variables, only : global_parameters, global_parameters_name, processMatrix use mo_message, only : message use mo_nml, only : close_nml, open_nml, position_nml -#ifndef MRM2MHM - use mo_append, only : append -#endif implicit none @@ -436,11 +433,9 @@ contains ! file name id containing parameter namelist integer(i4), intent(in) :: unamelist_param -#ifdef MRM2MHM ! equals sum of previous parameters integer(i4) :: start_index -#endif real(dp), dimension(nColPars) :: muskingumTravelTime_constant real(dp), dimension(nColPars) :: muskingumTravelTime_riverLength @@ -472,7 +467,6 @@ contains read(unamelist_param, nml = routing3) end if -#ifdef MRM2MHM ! ------------------------------------------------------------------------- ! INCLUDE MRM PARAMETERS IN PARAMETERS OF MHM ! ------------------------------------------------------------------------- @@ -517,48 +511,6 @@ contains global_parameters_name(start_index + 1 : start_index + processMatrix(8,2)) = (/ & 'slope_factor'/) end if -#else - ! Muskingum routing parameters with MPR - if (processCase .eq. 1_i4) then - processMatrix(8, 1) = processCase - processMatrix(8, 2) = 5_i4 - processMatrix(8, 3) = processMatrix(8, 2) - ! set variables of mrm (redundant in case of coupling to mhm) - call append(global_parameters, reshape(muskingumTravelTime_constant, (/1, nColPars/))) - call append(global_parameters, reshape(muskingumTravelTime_riverLength, (/1, nColPars/))) - call append(global_parameters, reshape(muskingumTravelTime_riverSlope, (/1, nColPars/))) - call append(global_parameters, reshape(muskingumTravelTime_impervious, (/1, nColPars/))) - call append(global_parameters, reshape(muskingumAttenuation_riverSlope, (/1, nColPars/))) - - call append(global_parameters_name, (/ & - 'muskingumTravelTime_constant ', & - 'muskingumTravelTime_riverLength', & - 'muskingumTravelTime_riverSlope ', & - 'muskingumTravelTime_impervious ', & - 'muskingumAttenuation_riverSlope'/)) - ! adaptive timestep routing - else if (processCase .eq. 2_i4) then - processMatrix(8, 1) = processCase - processMatrix(8, 2) = 1_i4 - processMatrix(8, 3) = processMatrix(8, 2) - ! set variables of mrm (redundant in case of coupling to mhm) - call append(global_parameters, reshape(streamflow_celerity, (/1, nColPars/))) - - - call append(global_parameters_name, (/ & - 'streamflow_celerity'/)) - ! adaptive timestep routing - varying celerity - else if (processCase .eq. 3_i4) then - processMatrix(8, 1) = processCase - processMatrix(8, 2) = 1_i4 - processMatrix(8, 3) = processMatrix(8, 2) - ! set variables of mrm (redundant in case of coupling to mhm) - call append(global_parameters, reshape(slope_factor, (/1, nColPars/))) - - call append(global_parameters_name, (/ & - 'slope_factor'/)) - end if -#endif ! check if parameter are in range if (.not. in_bound(global_parameters)) then diff --git a/src/mRM/mo_mrm_read_data.f90 b/src/mRM/mo_mrm_read_data.f90 index 28dc0abc92372e28f6d16183aa0f59d9255c9159..2a308e1a468a8833b9b74392c27bd98e04dc7ba4 100644 --- a/src/mRM/mo_mrm_read_data.f90 +++ b/src/mRM/mo_mrm_read_data.f90 @@ -51,10 +51,6 @@ contains use mo_append, only : append use mo_common_constants, only : nodata_i4 -#ifndef MRM2MHM - use mo_common_constants, only : nodata_dp - use mo_mpr_global_variables, only: L0_slope -#endif use mo_common_read_data, only : read_dem, read_lcover use mo_common_variables, only : Grid, L0_LCover, dirMorpho, level0, domainMeta, processMatrix use mo_mpr_file, only: file_slope, uslope @@ -86,10 +82,6 @@ contains integer(i4), dimension(:, :), allocatable :: data_i4_2d -#ifndef MRM2MHM - real(dp), dimension(:, :), allocatable :: data_dp_2d -#endif - integer(i4), dimension(:, :), allocatable :: dataMatrix_i4 logical, dimension(:, :), allocatable :: mask_2d @@ -184,23 +176,6 @@ contains end if end if -#ifndef MRM2MHM - ! only read slope if not coupled to mHM and using third process Matrix - if ((iVar .eq. 4) .and. (processMatrix(8, 1) .eq. 3)) then - ! reading - call read_spatial_data_ascii(trim(fName), nunit, & - level0_iDomain%nrows, level0_iDomain%ncols, level0_iDomain%xllcorner, & - level0_iDomain%yllcorner, level0_iDomain%cellsize, data_dp_2d, mask_2d) - ! put global nodata value into array (probably not all grid cells have values) - data_dp_2d = merge(data_dp_2d, nodata_dp, mask_2d) - ! put data in variable - call append(L0_slope, pack(data_dp_2d, level0_iDomain%mask)) - - ! deallocate arrays - deallocate(data_dp_2d, mask_2d) - end if -#endif - ! put data into global L0 variable select case (iVar) case(1) ! flow accumulation diff --git a/src/mRM/mo_mrm_river_head.f90 b/src/mRM/mo_mrm_river_head.f90 index d16ffa09cc12c2ff745796964a4ea8e1b256c703..893cae6fcb9d8419103d40ec01967ebd18da364d 100644 --- a/src/mRM/mo_mrm_river_head.f90 +++ b/src/mRM/mo_mrm_river_head.f90 @@ -206,11 +206,7 @@ module mo_mrm_river_head use mo_string_utils, only : num2str use mo_julian, only : dec2date use mo_grid, only : geoCoordinates, mapCoordinates -#ifdef MRM2MHM use mo_file, only : version -#else - use mo_mrm_file, only : version -#endif use mo_common_variables, only : project_details, setup_description, & simulation_type, Conventions, contact, mHM_details, history use mo_message, only : message diff --git a/src/mRM/mrm_driver.f90 b/src/mRM/mrm_driver.f90 deleted file mode 100644 index cf92cf8f94d823f5701deebcc76f171f3fd72af0..0000000000000000000000000000000000000000 --- a/src/mRM/mrm_driver.f90 +++ /dev/null @@ -1,91 +0,0 @@ -!> \file mrm_driver.f90 - -!> \brief TODO: add description - -!> \details TODO: add description - -!> \authors Stephan Thober - -!> \date Jun 2018 - -! Modifications: -! Robert Schweppe Jun 2018 - refactoring and reformatting - -#ifndef MRM2MHM -program mrm_driver - - use mo_common_mHM_mRM_variables, only : optimize, mrm_coupling_mode - use mo_common_variables, only : global_parameters, global_parameters_name, dirConfigOut - use mo_finish, only : finish - use mo_kind, only : dp, i4 - use mo_message, only : message - use mo_mrm_eval, only : mrm_eval - use mo_mrm_init, only : mrm_init, mrm_configuration - use mo_mrm_objective_function_runoff, only : single_objective_runoff - use mo_mrm_write, only : mrm_write, mrm_write_optifile, mrm_write_optinamelist - use mo_optimization, only : optimization - use mo_string_utils, only : num2str - use mo_timer, only : timers_init, timer_start, timer_stop, timer_get - use mo_mrm_file, only : file_namelist_mrm, unamelist_mrm, & - file_namelist_param_mrm, unamelist_param_mrm - - implicit none - - ! variables for optimization - real(dp) :: funcbest ! best objective function achivied during optimization - integer(i4) :: itimer - logical, allocatable :: maskpara(:) ! true = parameter will be optimized = parameter(i,4) = 1 - ! ! false = parameter will not be optimized = parameter(i,4) = 0 - procedure(mrm_eval), pointer :: eval - procedure(single_objective_runoff), pointer :: obj_func - - logical :: ReadLatLon - - ! -------------------------------------------------------------------------- - ! INITIALIZE - ! -------------------------------------------------------------------------- - mrm_coupling_mode = 0_i4 - call mrm_configuration(file_namelist_mrm, unamelist_mrm, & - file_namelist_param_mrm, unamelist_param_mrm, ReadLatLon) - call mrm_init(file_namelist_mrm, unamelist_mrm, & - file_namelist_param_mrm, unamelist_param_mrm, ReadLatLon = ReadLatLon) - ! Start timings - print*, 'start timer' - call timers_init - if (optimize) then - eval => mrm_eval - ! ----------------------------------------------------------------------- - ! OPTIMIZE - ! ----------------------------------------------------------------------- - call optimization(eval, obj_func, dirConfigOut, funcbest, maskpara) - ! write a file with final objective function and the best parameter set - call mrm_write_optifile(funcbest, global_parameters(:, 3), global_parameters_name(:)) - ! write a file with final best parameter set in a namelist format - call mrm_write_optinamelist(global_parameters, maskpara, global_parameters_name(:)) - deallocate(maskpara) - else - ! ----------------------------------------------------------------------- - ! FORWARD RUN - ! ----------------------------------------------------------------------- - itimer = 1 - call timer_start(itimer) - call message(' perform forward run of mRM') - call mrm_eval(global_parameters(:, 3)) - call timer_stop(itimer) - call message(' in ', trim(num2str(timer_get(itimer), '(F9.3)')), ' seconds.') - end if - ! -------------------------------------------------------------------------- - ! WRITE OUTPUT - ! -------------------------------------------------------------------------- - call mrm_write() - ! -------------------------------------------------------------------------- - ! FINISH UP - ! -------------------------------------------------------------------------- - call finish('mRM', 'Finished!') -end program mrm_driver -#else -! dummy module such that this file is never empty for compilation -module dummy_mrm - implicit none -end module dummy_mrm -#endif diff --git a/testingInstructions b/testingInstructions deleted file mode 100644 index 74d2c021b102469f2dd236cb7bf7eb51a5bb5d64..0000000000000000000000000000000000000000 --- a/testingInstructions +++ /dev/null @@ -1,71 +0,0 @@ -copy test_domain to test_domain and test_domain_2, edit namelist according to the following diff: - -99a100,111 -> !----------------------------------------------------------------------------- -> !> read domain specific optional data -> !----------------------------------------------------------------------------- -> !> (0) default: the program decides. If you are confused, choose 0 -> !> (1) runoff -> !> (2) sm -> !> (3) tws -> !> (4) neutons -> !> (5) et -> !> (6) et & tws -> read_opt_domain_data(1) = 6 -> read_opt_domain_data(2) = 1 -134c146 -< optimize = .FALSE. ---- -> optimize = .TRUE. -182c194 -< ---- -> !> (32) MO: Q + ET + TWS -184c196 -< opti_function = 10 ---- -> opti_function = 32 -186d197 -< -253c264 -< dir_Out(2) = "test_domain_2/output/" ---- -> dir_Out(2) = "test_domain_2/output_b1/" -255c266 -< file_LatLon(2) = "test_domain_2/input/latlon/latlon.nc" ---- -> file_LatLon(2) = "test_domain_2/input/latlon/latlon_1.nc" -337c348 -< dir_Total_Runoff(2) = 'test_domain_2/output/' ---- -> dir_Total_Runoff(2) = 'test_domain_2/output_b1/' -356a368 -> dir_soil_moisture(2) = "test_domain_2/input/optional_data/" -374a387 -> dir_neutrons(2) = "test_domain/input/optional_data/" -380a394 -> dir_evapotranspiration(2) = "test_domain/input/optional_data/" -492c506 -< warming_Days(2) = 180 ---- -> warming_Days(2) = 0 -495c509 -< eval_Per(2)%yStart = 1993 ---- -> eval_Per(2)%yStart = 1990 -654c668 -< nGaugesTotal = 2 ---- -> nGaugesTotal = 1 -662c676 -< NoGauges_domain(1) = 1 ---- -> NoGauges_domain(1) = 0 -672c686 -< Gauge_id(2,1) = 45 ---- -> Gauge_id(2,1) = 398 -674c688 -< Gauge_filename(2,1) = "45.txt" ---- -> Gauge_filename(2,1) = "00398.txt"