From e9f3f842082e6790e4efcb1402bbb56b10ff130b Mon Sep 17 00:00:00 2001
From: ronesy <rlt@nilu.no>
Date: Fri, 28 Feb 2025 12:10:15 +0100
Subject: [PATCH] rename izwork to cova in mod_analytic for clarity and added
 check to mod_settings for use of const_out

---
 README.txt              |  2 +-
 constraint/makefile     | 38 +++++++++++---------------------------
 source/mod_analytic.f90 |  4 ++--
 source/mod_save.f90     |  2 +-
 source/mod_settings.f90 |  4 ++++
 5 files changed, 19 insertions(+), 31 deletions(-)

diff --git a/README.txt b/README.txt
index 04d986c..fc88213 100644
--- a/README.txt
+++ b/README.txt
@@ -57,6 +57,6 @@ Contents:
   constraint:
      - extra tool (not necessarily needed for FLEXINVERT) to
        constrain fluxes to known values
-     - either constrains fluxes > 0 or adds additional constraint
+     - either constrains fluxes >= 0 or adds additional constraint
        for global inversions with limited observational coverage in
        some regions 
diff --git a/constraint/makefile b/constraint/makefile
index 2b2c841..d69aef8 100644
--- a/constraint/makefile
+++ b/constraint/makefile
@@ -2,43 +2,27 @@ F90      = /apps/sw/ubuntu22.04/gcc-11.4.0/gcc-13.2.0-tkesyophy2o6rjlzknndu3b4oy
 LIBPATH = /apps/sw/ubuntu22.04/gcc-13.2.0/netcdf-fortran-4.6.1-ubcs4l6pjwpgoeyvz32wpzyzykib6bwm/lib/
 INCPATH = /apps/sw/ubuntu22.04/gcc-13.2.0/netcdf-fortran-4.6.1-ubcs4l6pjwpgoeyvz32wpzyzykib6bwm/include/
 
-LNK = -o
-CMPL = -c
-LIBS = -lnetcdf -lnetcdff -llapack
+LIBS  = -llapack -lm -DUSE_NCF -lnetcdff
 
-FFLAGS = -O3 -g -m64 -fbounds-check -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -ffree-form \
-         -fbacktrace
+FFLAGS = -I$(INCPATH) -O3 -g -m64 -fbounds-check -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -ffree-form \
+         -fbacktrace -DUSE_NCF -lnetcdff
 
-LDFLAGS  = $(FFLAGS)  -L$(LIBPATH) -I$(INCPATH) $(LIBS)
+LDFLAGS  = $(FFLAGS) -L$(LIBPATH) -Wl,-rpath,$(LIBPATH) $(LIBS)
 
 MAIN = constraint
 
 OBJECTS = mod_var.o main.o readinitial.o readinput.o gridarea.o \
           calcselector.o bayesian.o regridemissions.o write3Dncdf.o save.o
 
+%o.: %.mod
+
 $(MAIN): $(OBJECTS)
-	$(F90) $(LNK) $(MAIN) $(OBJECTS) $(LIBS)
-mod_var.o: mod_var.f90
-	$(F90) $(LDFLAGS) $(CMPL) mod_var.f90
-main.o: main.f90
-	$(F90) $(LDFLAGS) $(CMPL) main.f90
-readinitial.o: readinitial.f90
-	$(F90) $(LDFLAGS) $(CMPL) readinitial.f90
-readinput.o: readinput.f90
-	$(F90) $(LDFLAGS) $(CMPL) readinput.f90
-gridarea.o: gridarea.f90
-	$(F90) $(LDFLAGS) $(CMPL) gridarea.f90
-calcselector.o: calcselector.f90
-	$(F90) $(LDFLAGS) $(CMPL) calcselector.f90
-bayesian.o: bayesian.f90
-	$(F90) $(LDFLAGS) $(CMPL) bayesian.f90
-regridemissions.o: regridemissions.f90
-	$(F90) $(LDFLAGS) $(CMPL) regridemissions.f90
-write3Dncdf.o: write3Dncdf.f90
-	$(F90) $(LDFLAGS) $(CMPL) write3Dncdf.f90
-save.o: save.f90
-	$(F90) $(LDFLAGS) $(CMPL) save.f90
+	+$(F90) -o $@ $(OBJECTS) $(LDFLAGS)
+
+%.o : %.f90
+	+$(F90) -c $(FFLAGS) $<
 
 clean:
 	rm *.o *.mod
 
+.SUFFIXES = ${SUFFIXES} .f90
diff --git a/source/mod_analytic.f90 b/source/mod_analytic.f90
index 4f1d9fa..146100e 100644
--- a/source/mod_analytic.f90
+++ b/source/mod_analytic.f90
@@ -308,8 +308,8 @@ module mod_analytic
     ! verbose output
     ! --------------
 
-    if ( config%const_out ) then
-      filename = trim(files%path_output)//'izwork.txt'
+    if ( config%verbose.or.config%const_out ) then
+      filename = trim(files%path_output)//'cova.txt'
       open(100,file=trim(filename),status='replace',action='write',iostat=ierr)
       write(rowfmt,'(A,I6,A)') '(',nvar,'(E11.4,1X))'
       do i = 1, nvar
diff --git a/source/mod_save.f90 b/source/mod_save.f90
index 5e3ca75..1219cef 100644
--- a/source/mod_save.f90
+++ b/source/mod_save.f90
@@ -143,7 +143,7 @@ module mod_save
       ! write posterior state vector if constraint output is requested
       open(100,file=trim(files%path_output)//'posterior.txt',status='replace',action='write',iostat=ierr)
       do n = 1, nvar
-              write(100,*) states%px(n)/numscale
+        write(100,*) states%px(n)/numscale
       end do
       close(100)
     endif
diff --git a/source/mod_settings.f90 b/source/mod_settings.f90
index b49c866..082047a 100644
--- a/source/mod_settings.f90
+++ b/source/mod_settings.f90
@@ -961,6 +961,10 @@ module mod_settings
         print*, 'ERROR: at least one of satellite or ground must be true'
         stop
       endif
+      if ( config%const_out.and..not.config%method.eq.'analytic' ) then
+        print*, 'ERROR: for constraint output method must be analytic'
+        stop
+      endif
 
     end subroutine read_config_settings
 
-- 
GitLab