!! Copyright (C) Stichting Deltares, 2005-2023. !! !! This file is part of iMOD. !! !! This program is free software: you can redistribute it and/or modify !! it under the terms of the GNU General Public License as published by !! the Free Software Foundation, either version 3 of the License, or !! (at your option) any later version. !! !! This program 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 General Public License for more details. !! !! You should have received a copy of the GNU General Public License !! along with this program. If not, see . !! !! Contact: imod.support@deltares.nl !! Stichting Deltares !! P.O. Box 177 !! 2600 MH Delft, The Netherlands. !! MODULE MOD_IPEST_GLM_PAR USE IMODVAR, ONLY : DP_KIND,SP_KIND INTEGER,PARAMETER :: NCSECS=1000 REAL(KIND=DP_KIND),PARAMETER :: XPBND=0.01D0 CHARACTER(LEN=256),ALLOCATABLE,DIMENSION(:) :: RNG,RNL INTEGER,ALLOCATABLE,DIMENSION(:,:) :: IPROC INTEGER,ALLOCATABLE,DIMENSION(:) :: GPARAM,LPARAM,ISTATUS,INSENS,STIME,ETIME,STIMEJ,ETIMEJ INTEGER :: IUPESTOUT,IUPESTPROGRESS,IUPESTEFFICIENCY,IUPESTSENSITIVITY,IUPESTRESIDUAL,IUPESTRUNFILE,IUPESTJACOBIAN,IUPESTPRESIDUAL REAL(KIND=DP_KIND),ALLOCATABLE,DIMENSION(:) :: GF_H,GF_O,LAMBDAS CHARACTER(LEN=2100) :: BLINE CHARACTER(LEN=256) :: LINE CHARACTER(LEN=52) :: SLINE TYPE MSROBJ CHARACTER(LEN=32),POINTER,DIMENSION(:) :: CLABEL=>NULL() INTEGER,POINTER,DIMENSION(:) :: L=>NULL() REAL(KIND=DP_KIND),POINTER,DIMENSION(:) :: X=>NULL() !## x coordinate REAL(KIND=DP_KIND),POINTER,DIMENSION(:) :: Y=>NULL() !## y coordinate REAL(KIND=SP_KIND),POINTER,DIMENSION(:) :: O=>NULL() !## observation REAL(KIND=SP_KIND),POINTER,DIMENSION(:) :: C=>NULL() !## computed REAL(KIND=SP_KIND),POINTER,DIMENSION(:,:) :: IESC=>NULL() !## computed for ies optimization REAL(KIND=SP_KIND),POINTER,DIMENSION(:) :: W=>NULL() !## weight REAL(KIND=SP_KIND),POINTER,DIMENSION(:) :: MU=>NULL() !## weight tikhonov REAL(KIND=SP_KIND),POINTER,DIMENSION(:) :: D=>NULL() !## acceptable difference REAL(KIND=SP_KIND),POINTER,DIMENSION(:) :: NS=>NULL() !## nash sutcliffe REAL(KIND=SP_KIND),POINTER,DIMENSION(:) :: COR=>NULL() !## correlation INTEGER(KIND=DP_KIND),POINTER,DIMENSION(:) :: IDATE=>NULL() INTEGER(KIND=SP_KIND),POINTER,DIMENSION(:) :: IPF=>NULL() INTEGER(KIND=SP_KIND),POINTER,DIMENSION(:) :: LOC=>NULL() REAL(KIND=SP_KIND),POINTER,DIMENSION(:,:) :: DHG=>NULL() !## head sensitivity REAL(KIND=SP_KIND),POINTER,DIMENSION(:,:) :: DHL=>NULL() !## head linesearch REAL(KIND=SP_KIND),POINTER,DIMENSION(:,:) :: HG=>NULL(),HL=>NULL() !## head values sensitivities/linesearch REAL(KIND=DP_KIND),POINTER,DIMENSION(:) :: DHG_J=>NULL(),DHL_J=>NULL() !## objective function values REAL(KIND=DP_KIND),POINTER,DIMENSION(:) :: DPG_J=>NULL() !## objective function values REAL(KIND=DP_KIND),POINTER,DIMENSION(:) :: GOF=>NULL(),NSC=>NULL() !## goodness-of-fit,nash-sutcliffe REAL(KIND=DP_KIND),POINTER,DIMENSION(:) :: GOF_H=>NULL(),NSC_H=>NULL() !## history of goodness-of-fit,nash-sutcliffe INTEGER,POINTER,DIMENSION(:,:) :: SCORE=>NULL() !## sum of positive and negative scores REAL(KIND=DP_KIND),POINTER,DIMENSION(:) :: TJ_H=>NULL(),RJ_H=>NULL() !## history of objective function values REAL(KIND=DP_KIND) :: J,TJ,PJ,RJ,LIMJ,TJRESTART,RJRESTART REAL(KIND=SP_KIND),POINTER,DIMENSION(:) :: E=>NULL() !## measurement error INTEGER :: NOBS END TYPE MSROBJ TYPE(MSROBJ) :: MSR REAL(KIND=DP_KIND),ALLOCATABLE,DIMENSION(:,:) :: JE !## j-ensembles REAL(KIND=DP_KIND),ALLOCATABLE,DIMENSION(:,:) :: SIGMA !## stdev of data-error REAL(KIND=DP_KIND),ALLOCATABLE,DIMENSION(:,:) :: MU !## mu of data-error REAL(KIND=DP_KIND),ALLOCATABLE,DIMENSION(:,:) :: QR !## weight of parameters REAL(KIND=DP_KIND),ALLOCATABLE,DIMENSION(:,:) :: QO !## operator tikhonov REAL(KIND=DP_KIND) :: MU_INI !## initial tikhonov multiplier END MODULE MOD_IPEST_GLM_PAR