From 7b6119fa064fca889bfe6f7b446bd9b550d16d70 Mon Sep 17 00:00:00 2001 From: Michel Bechtold Date: Wed, 21 Feb 2024 09:31:21 +0100 Subject: [PATCH 1/2] BUG: Sentinel-1 VV VH backscatter DA (REWORKED) --- lis/core/LIS_DAobservationsMod.F90 | 10 ++++--- lis/dataassim/algorithm/enkf/enkf_Mod.F90 | 2 +- .../S1_sigmaVVVHSMLAI_Mod.F90 | 27 ++++++++++++++++--- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/lis/core/LIS_DAobservationsMod.F90 b/lis/core/LIS_DAobservationsMod.F90 index b0552f730..f1dba814b 100644 --- a/lis/core/LIS_DAobservationsMod.F90 +++ b/lis/core/LIS_DAobservationsMod.F90 @@ -2047,10 +2047,12 @@ subroutine LIS_writevar_innov(ftn, n, k, varid, var) count1=1 + (i-1)*SUM(LIS_obs_ngrids(k,0:i-2)) gtmp1 = LIS_rc%udef do l=1,LIS_npes - count1=count1+MIN0(1,l-1)*& - (LIS_rc%nobtypes(k)-i)*LIS_obs_ngrids(k,l-2) +& - MIN0(1,l-1)*& - (i-1)*LIS_obs_ngrids(k,l-1) + if (l.gt.1) then + count1=count1+MIN0(1,l-1)*& + (LIS_rc%nobtypes(k)-i)*LIS_obs_ngrids(k,l-2) +& + MIN0(1,l-1)*& + (i-1)*LIS_obs_ngrids(k,l-1) + endif do t =1, LIS_obs_ngrids(k,l-1) c = LIS_obs_domain(n,k)%glb_col(l,t) r = LIS_obs_domain(n,k)%glb_row(l,t) diff --git a/lis/dataassim/algorithm/enkf/enkf_Mod.F90 b/lis/dataassim/algorithm/enkf/enkf_Mod.F90 index f0bb57e92..22b1a4f97 100644 --- a/lis/dataassim/algorithm/enkf/enkf_Mod.F90 +++ b/lis/dataassim/algorithm/enkf/enkf_Mod.F90 @@ -316,7 +316,7 @@ subroutine enkf_increments(n,k) !---------------------------------------------------------------------------- ! Assemble observation covariances. !---------------------------------------------------------------------------- - allocate(obs_param(LIS_rc%nobtypes(k))) + allocate(obs_param(Nobjs)) call generateObsparam(Nobjs, LIS_OBS_Pert_State(n,k),obs_param) !---------------------------------------------------------------------------- diff --git a/lis/dataassim/obs/S1_sigmaVVVHSMLAI/S1_sigmaVVVHSMLAI_Mod.F90 b/lis/dataassim/obs/S1_sigmaVVVHSMLAI/S1_sigmaVVVHSMLAI_Mod.F90 index d3b9eb7b9..a7591e1b8 100644 --- a/lis/dataassim/obs/S1_sigmaVVVHSMLAI/S1_sigmaVVVHSMLAI_Mod.F90 +++ b/lis/dataassim/obs/S1_sigmaVVVHSMLAI/S1_sigmaVVVHSMLAI_Mod.F90 @@ -65,7 +65,8 @@ subroutine S1_sigmaVVVHSMLAI_setup(k, OBS_State, OBS_Pert_State) use LIS_DAobservationsMod use LIS_logMod use netcdf - + use LIS_constantsMod, only : LIS_CONST_PATH_LEN + implicit none ! !ARGUMENTS: @@ -95,6 +96,7 @@ subroutine S1_sigmaVVVHSMLAI_setup(k, OBS_State, OBS_Pert_State) character*100 :: S1sigmaobsdir character*80 :: S1_firstfile character*80 :: S1_filename + character(len=LIS_CONST_PATH_LEN) :: list_files character*100 :: temp real, allocatable :: obsstd(:) character*1 :: vid(2) @@ -109,8 +111,10 @@ subroutine S1_sigmaVVVHSMLAI_setup(k, OBS_State, OBS_Pert_State) integer :: ncid integer :: flist integer :: ios + integer :: rc character*100 :: infile character*100 :: xname, yname + integer, external :: create_filelist allocate(S1_sigma_struc(LIS_rc%nnest)) @@ -284,15 +288,30 @@ subroutine S1_sigmaVVVHSMLAI_setup(k, OBS_State, OBS_Pert_State) !------------------------------------------------------------- ! set up the S1 domain %and interpolation weights. !------------------------------------------------------------- - ! Open first file to get nx ny dimensions - call system('ls ./' // trim(S1sigmaobsdir) // ' > ./S1_listfiles.txt') + if(LIS_masterproc) then + list_files = trim(S1sigmaobsdir)//'/'//'S1*.nc' + write(LIS_logunit,*) & + '[INFO] Searching for ',trim(list_files) + rc = create_filelist(trim(list_files)//char(0), & + "S1_listfiles.txt"//char(0)) + if (rc .ne. 0) then + write(LIS_logunit,*) & + '[WARN] Problem encountered when searching for S1 files' + write(LIS_logunit,*) & + 'Was searching for ',trim(list_files) + write(LIS_logunit,*) & + 'LIS will continue...' + endif + end if + + flist = LIS_getNextUnitNumber() open(flist, file=trim('./S1_listfiles.txt'), & status='old', iostat=status) read(flist, '(a)', iostat=status) S1_firstfile - S1_filename = trim(S1sigmaobsdir) // '/' // trim(S1_firstfile) + S1_filename = trim(S1_firstfile) ios = nf90_open(path=S1_filename,& mode=NF90_NOWRITE,ncid=ncid) From 02f75d855797462bb179f1af2333e2a4f5a12166 Mon Sep 17 00:00:00 2001 From: Michel Bechtold Date: Wed, 21 Feb 2024 22:03:46 +0100 Subject: [PATCH 2/2] BUG: Sentinel-1 VV VH backscatter DA (REWORKED) --- .../obs/S1_sigmaVVSM/S1_sigmaVVSM_Mod.F90 | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/lis/dataassim/obs/S1_sigmaVVSM/S1_sigmaVVSM_Mod.F90 b/lis/dataassim/obs/S1_sigmaVVSM/S1_sigmaVVSM_Mod.F90 index 3af54ae5f..0249157c0 100644 --- a/lis/dataassim/obs/S1_sigmaVVSM/S1_sigmaVVSM_Mod.F90 +++ b/lis/dataassim/obs/S1_sigmaVVSM/S1_sigmaVVSM_Mod.F90 @@ -63,7 +63,8 @@ subroutine S1_sigmaVVSM_setup(k, OBS_State, OBS_Pert_State) use LIS_DAobservationsMod use LIS_logMod use netcdf - + use LIS_constantsMod, only : LIS_CONST_PATH_LEN + implicit none ! !ARGUMENTS: @@ -93,6 +94,7 @@ subroutine S1_sigmaVVSM_setup(k, OBS_State, OBS_Pert_State) character*100 :: S1sigmaobsdir character*80 :: S1_firstfile character*80 :: S1_filename + character(len=LIS_CONST_PATH_LEN) :: list_files character*100 :: temp real, allocatable :: obsstd(:) character*1 :: vid(2) @@ -107,9 +109,10 @@ subroutine S1_sigmaVVSM_setup(k, OBS_State, OBS_Pert_State) integer :: ncid integer :: flist integer :: ios + integer :: rc character*100 :: infile character*100 :: xname, yname - + integer, external :: create_filelist allocate(S1_sigma_struc(LIS_rc%nnest)) @@ -270,13 +273,29 @@ subroutine S1_sigmaVVSM_setup(k, OBS_State, OBS_Pert_State) !------------------------------------------------------------- ! Open first file to get nx ny dimensions - call system('ls ./' // trim(S1sigmaobsdir) // ' > ./S1_listfiles.txt') + if(LIS_masterproc) then + list_files = trim(S1sigmaobsdir)//'/'//'S1*.nc' + write(LIS_logunit,*) & + '[INFO] Searching for ',trim(list_files) + rc = create_filelist(trim(list_files)//char(0), & + "S1_listfiles.txt"//char(0)) + if (rc .ne. 0) then + write(LIS_logunit,*) & + '[WARN] Problem encountered when searching for S1 files' + write(LIS_logunit,*) & + 'Was searching for ',trim(list_files) + write(LIS_logunit,*) & + 'LIS will continue...' + endif + end if + + flist = LIS_getNextUnitNumber() open(flist, file=trim('./S1_listfiles.txt'), & status='old', iostat=status) read(flist, '(a)', iostat=status) S1_firstfile - S1_filename = trim(S1sigmaobsdir) // '/' // trim(S1_firstfile) + S1_filename = trim(S1_firstfile) ios = nf90_open(path=S1_filename,& mode=NF90_NOWRITE,ncid=ncid)