Cmake problem when couple ASPECT and FASTSCAPE

Hi~All,

I try to couple ASPECT and FASTSCAPE with methods posted in this comments

However, a cmake problem is always raised

I have checked the cmake version: 3.16. I think it fits the install requirement of ASPECT.

How to fix this problem?

Thanks a lot !

Grace

@cgw0814 It complains about you referencing a directory ~/djneu/fastscapelib-fortran. Does this directory exist on your machine, or is this just the directory mentioned in the instructions?
Best
W.

Hi, @bangerth,
the ~/djneu/fastscapelib-fortran was from Derek’s repository by git clone as instruction.

I also test fastscapelib-fortran from main branch.

The result is the same as image shows.

BTW, my aspect version is pre-2.6

Regards,

Grace Wu

@cgw0814 But the question still pertains. The error message says that a specific file cannot be read. Does it exist? What happens if you do

  ls -l ~/fastscapelib-fortran/build

?

Best
Wolfgang

Hi, @bangerth

I’m sorry!

The Makefile does exist!

Regards,

Grace Wu

@cgw0814 I would like to help, but do not see how. cmake says that the file cannot be read, but you show that it exists. Is it in fact readable if you open it in an editor? I don’t know what else to suggest.
Best
W.

Hi~ @bangerth Thank you for help.

I can open the Makefile by an editor, I think it’s readable! And I try to copy the Makefile’s content in this post!

I’ m sorry because I’m a beginner @@"

But this content is very long as following, and in order that you want check the problem with other content in the build file, maybe it’s good to attatch all contents of build files of fastscape-fortran in this post.
build.zip (366.7 KB)

thanks again

Regards

GW

PS.

The following are the contents of Makefile

# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.16

# Default target executed when no arguments are given to make.
default_target: all

.PHONY : default_target

# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:


#=============================================================================
# Special targets provided by cmake.

# Disable implicit rules so canonical targets will work.
.SUFFIXES:


# Remove some rules from gmake that .SUFFIXES does not remove.
SUFFIXES =

.SUFFIXES: .hpux_make_needs_suffix_list


# Suppress display of executed commands.
$(VERBOSE).SILENT:


# A target that is always out of date.
cmake_force:

.PHONY : cmake_force

#=============================================================================
# Set environment variables for the build.

# The shell in which to execute make rules.
SHELL = /bin/sh

# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake

# The command to remove a file.
RM = /usr/bin/cmake -E remove -f

# Escaping for special characters.
EQUALS = =

# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/ubuntu/fastscapelib-fortran

# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/ubuntu/fastscapelib-fortran/build

#=============================================================================
# Targets provided globally by CMake.

# Special rule for the target install/strip
install/strip: preinstall
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
	/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip

# Special rule for the target install/strip
install/strip/fast: preinstall/fast
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
	/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip/fast

# Special rule for the target install/local
install/local: preinstall
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
	/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local

# Special rule for the target install/local
install/local/fast: preinstall/fast
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
	/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local/fast

# Special rule for the target install
install: preinstall
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
	/usr/bin/cmake -P cmake_install.cmake
.PHONY : install

# Special rule for the target install
install/fast: preinstall/fast
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
	/usr/bin/cmake -P cmake_install.cmake
.PHONY : install/fast

# Special rule for the target list_install_components
list_install_components:
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
.PHONY : list_install_components

# Special rule for the target list_install_components
list_install_components/fast: list_install_components

.PHONY : list_install_components/fast

# Special rule for the target rebuild_cache
rebuild_cache:
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
	/usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache

# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache

.PHONY : rebuild_cache/fast

# Special rule for the target edit_cache
edit_cache:
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
	/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache

# Special rule for the target edit_cache
edit_cache/fast: edit_cache

.PHONY : edit_cache/fast

# The main all target
all: cmake_check_build_system
	$(CMAKE_COMMAND) -E cmake_progress_start /home/ubuntu/fastscapelib-fortran/build/CMakeFiles /home/ubuntu/fastscapelib-fortran/build/CMakeFiles/progress.marks
	$(MAKE) -f CMakeFiles/Makefile2 all
	$(CMAKE_COMMAND) -E cmake_progress_start /home/ubuntu/fastscapelib-fortran/build/CMakeFiles 0
.PHONY : all

# The main clean target
clean:
	$(MAKE) -f CMakeFiles/Makefile2 clean
.PHONY : clean

# The main clean target
clean/fast: clean

.PHONY : clean/fast

# Prepare targets for installation.
preinstall: all
	$(MAKE) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall

# Prepare targets for installation.
preinstall/fast:
	$(MAKE) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast

# clear depends
depend:
	$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend

#=============================================================================
# Target rules for targets named libfastscape_shared

# Build rule for target.
libfastscape_shared: cmake_check_build_system
	$(MAKE) -f CMakeFiles/Makefile2 libfastscape_shared
.PHONY : libfastscape_shared

# fast build rule for target.
libfastscape_shared/fast:
	$(MAKE) -f CMakeFiles/libfastscape_shared.dir/build.make CMakeFiles/libfastscape_shared.dir/build
.PHONY : libfastscape_shared/fast

#=============================================================================
# Target rules for targets named libfastscape_static

# Build rule for target.
libfastscape_static: cmake_check_build_system
	$(MAKE) -f CMakeFiles/Makefile2 libfastscape_static
.PHONY : libfastscape_static

# fast build rule for target.
libfastscape_static/fast:
	$(MAKE) -f CMakeFiles/libfastscape_static.dir/build.make CMakeFiles/libfastscape_static.dir/build
.PHONY : libfastscape_static/fast

#=============================================================================
# Target rules for targets named libfastscape_objects

# Build rule for target.
libfastscape_objects: cmake_check_build_system
	$(MAKE) -f CMakeFiles/Makefile2 libfastscape_objects
.PHONY : libfastscape_objects

# fast build rule for target.
libfastscape_objects/fast:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/build
.PHONY : libfastscape_objects/fast

src/Advect.o: src/Advect.f90.o

.PHONY : src/Advect.o

# target to build an object file
src/Advect.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Advect.f90.o
.PHONY : src/Advect.f90.o

src/Advect.i: src/Advect.f90.i

.PHONY : src/Advect.i

# target to preprocess a source file
src/Advect.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Advect.f90.i
.PHONY : src/Advect.f90.i

src/Advect.s: src/Advect.f90.s

.PHONY : src/Advect.s

# target to generate assembly for a file
src/Advect.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Advect.f90.s
.PHONY : src/Advect.f90.s

src/Diffusion.o: src/Diffusion.f90.o

.PHONY : src/Diffusion.o

# target to build an object file
src/Diffusion.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Diffusion.f90.o
.PHONY : src/Diffusion.f90.o

src/Diffusion.i: src/Diffusion.f90.i

.PHONY : src/Diffusion.i

# target to preprocess a source file
src/Diffusion.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Diffusion.f90.i
.PHONY : src/Diffusion.f90.i

src/Diffusion.s: src/Diffusion.f90.s

.PHONY : src/Diffusion.s

# target to generate assembly for a file
src/Diffusion.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Diffusion.f90.s
.PHONY : src/Diffusion.f90.s

src/FastScape_api.o: src/FastScape_api.f90.o

.PHONY : src/FastScape_api.o

# target to build an object file
src/FastScape_api.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/FastScape_api.f90.o
.PHONY : src/FastScape_api.f90.o

src/FastScape_api.i: src/FastScape_api.f90.i

.PHONY : src/FastScape_api.i

# target to preprocess a source file
src/FastScape_api.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/FastScape_api.f90.i
.PHONY : src/FastScape_api.f90.i

src/FastScape_api.s: src/FastScape_api.f90.s

.PHONY : src/FastScape_api.s

# target to generate assembly for a file
src/FastScape_api.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/FastScape_api.f90.s
.PHONY : src/FastScape_api.f90.s

src/FastScape_ctx.o: src/FastScape_ctx.f90.o

.PHONY : src/FastScape_ctx.o

# target to build an object file
src/FastScape_ctx.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/FastScape_ctx.f90.o
.PHONY : src/FastScape_ctx.f90.o

src/FastScape_ctx.i: src/FastScape_ctx.f90.i

.PHONY : src/FastScape_ctx.i

# target to preprocess a source file
src/FastScape_ctx.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/FastScape_ctx.f90.i
.PHONY : src/FastScape_ctx.f90.i

src/FastScape_ctx.s: src/FastScape_ctx.f90.s

.PHONY : src/FastScape_ctx.s

# target to generate assembly for a file
src/FastScape_ctx.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/FastScape_ctx.f90.s
.PHONY : src/FastScape_ctx.f90.s

src/FlowRouting.o: src/FlowRouting.f90.o

.PHONY : src/FlowRouting.o

# target to build an object file
src/FlowRouting.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/FlowRouting.f90.o
.PHONY : src/FlowRouting.f90.o

src/FlowRouting.i: src/FlowRouting.f90.i

.PHONY : src/FlowRouting.i

# target to preprocess a source file
src/FlowRouting.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/FlowRouting.f90.i
.PHONY : src/FlowRouting.f90.i

src/FlowRouting.s: src/FlowRouting.f90.s

.PHONY : src/FlowRouting.s

# target to generate assembly for a file
src/FlowRouting.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/FlowRouting.f90.s
.PHONY : src/FlowRouting.f90.s

src/LocalMinima.o: src/LocalMinima.f90.o

.PHONY : src/LocalMinima.o

# target to build an object file
src/LocalMinima.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/LocalMinima.f90.o
.PHONY : src/LocalMinima.f90.o

src/LocalMinima.i: src/LocalMinima.f90.i

.PHONY : src/LocalMinima.i

# target to preprocess a source file
src/LocalMinima.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/LocalMinima.f90.i
.PHONY : src/LocalMinima.f90.i

src/LocalMinima.s: src/LocalMinima.f90.s

.PHONY : src/LocalMinima.s

# target to generate assembly for a file
src/LocalMinima.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/LocalMinima.f90.s
.PHONY : src/LocalMinima.f90.s

src/Marine.o: src/Marine.f90.o

.PHONY : src/Marine.o

# target to build an object file
src/Marine.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Marine.f90.o
.PHONY : src/Marine.f90.o

src/Marine.i: src/Marine.f90.i

.PHONY : src/Marine.i

# target to preprocess a source file
src/Marine.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Marine.f90.i
.PHONY : src/Marine.f90.i

src/Marine.s: src/Marine.f90.s

.PHONY : src/Marine.s

# target to generate assembly for a file
src/Marine.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Marine.f90.s
.PHONY : src/Marine.f90.s

src/Strati.o: src/Strati.f90.o

.PHONY : src/Strati.o

# target to build an object file
src/Strati.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Strati.f90.o
.PHONY : src/Strati.f90.o

src/Strati.i: src/Strati.f90.i

.PHONY : src/Strati.i

# target to preprocess a source file
src/Strati.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Strati.f90.i
.PHONY : src/Strati.f90.i

src/Strati.s: src/Strati.f90.s

.PHONY : src/Strati.s

# target to generate assembly for a file
src/Strati.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Strati.f90.s
.PHONY : src/Strati.f90.s

src/StreamPowerLaw.o: src/StreamPowerLaw.f90.o

.PHONY : src/StreamPowerLaw.o

# target to build an object file
src/StreamPowerLaw.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/StreamPowerLaw.f90.o
.PHONY : src/StreamPowerLaw.f90.o

src/StreamPowerLaw.i: src/StreamPowerLaw.f90.i

.PHONY : src/StreamPowerLaw.i

# target to preprocess a source file
src/StreamPowerLaw.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/StreamPowerLaw.f90.i
.PHONY : src/StreamPowerLaw.f90.i

src/StreamPowerLaw.s: src/StreamPowerLaw.f90.s

.PHONY : src/StreamPowerLaw.s

# target to generate assembly for a file
src/StreamPowerLaw.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/StreamPowerLaw.f90.s
.PHONY : src/StreamPowerLaw.f90.s

src/TerrainDerivatives.o: src/TerrainDerivatives.f90.o

.PHONY : src/TerrainDerivatives.o

# target to build an object file
src/TerrainDerivatives.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/TerrainDerivatives.f90.o
.PHONY : src/TerrainDerivatives.f90.o

src/TerrainDerivatives.i: src/TerrainDerivatives.f90.i

.PHONY : src/TerrainDerivatives.i

# target to preprocess a source file
src/TerrainDerivatives.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/TerrainDerivatives.f90.i
.PHONY : src/TerrainDerivatives.f90.i

src/TerrainDerivatives.s: src/TerrainDerivatives.f90.s

.PHONY : src/TerrainDerivatives.s

# target to generate assembly for a file
src/TerrainDerivatives.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/TerrainDerivatives.f90.s
.PHONY : src/TerrainDerivatives.f90.s

src/Uplift.o: src/Uplift.f90.o

.PHONY : src/Uplift.o

# target to build an object file
src/Uplift.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Uplift.f90.o
.PHONY : src/Uplift.f90.o

src/Uplift.i: src/Uplift.f90.i

.PHONY : src/Uplift.i

# target to preprocess a source file
src/Uplift.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Uplift.f90.i
.PHONY : src/Uplift.f90.i

src/Uplift.s: src/Uplift.f90.s

.PHONY : src/Uplift.s

# target to generate assembly for a file
src/Uplift.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/Uplift.f90.s
.PHONY : src/Uplift.f90.s

src/VTK.o: src/VTK.f90.o

.PHONY : src/VTK.o

# target to build an object file
src/VTK.f90.o:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/VTK.f90.o
.PHONY : src/VTK.f90.o

src/VTK.i: src/VTK.f90.i

.PHONY : src/VTK.i

# target to preprocess a source file
src/VTK.f90.i:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/VTK.f90.i
.PHONY : src/VTK.f90.i

src/VTK.s: src/VTK.f90.s

.PHONY : src/VTK.s

# target to generate assembly for a file
src/VTK.f90.s:
	$(MAKE) -f CMakeFiles/libfastscape_objects.dir/build.make CMakeFiles/libfastscape_objects.dir/src/VTK.f90.s
.PHONY : src/VTK.f90.s

# Help Target
help:
	@echo "The following are some of the valid targets for this Makefile:"
	@echo "... all (the default if no target is provided)"
	@echo "... clean"
	@echo "... depend"
	@echo "... install/strip"
	@echo "... install/local"
	@echo "... install"
	@echo "... list_install_components"
	@echo "... rebuild_cache"
	@echo "... edit_cache"
	@echo "... libfastscape_shared"
	@echo "... libfastscape_static"
	@echo "... libfastscape_objects"
	@echo "... src/Advect.o"
	@echo "... src/Advect.i"
	@echo "... src/Advect.s"
	@echo "... src/Diffusion.o"
	@echo "... src/Diffusion.i"
	@echo "... src/Diffusion.s"
	@echo "... src/FastScape_api.o"
	@echo "... src/FastScape_api.i"
	@echo "... src/FastScape_api.s"
	@echo "... src/FastScape_ctx.o"
	@echo "... src/FastScape_ctx.i"
	@echo "... src/FastScape_ctx.s"
	@echo "... src/FlowRouting.o"
	@echo "... src/FlowRouting.i"
	@echo "... src/FlowRouting.s"
	@echo "... src/LocalMinima.o"
	@echo "... src/LocalMinima.i"
	@echo "... src/LocalMinima.s"
	@echo "... src/Marine.o"
	@echo "... src/Marine.i"
	@echo "... src/Marine.s"
	@echo "... src/Strati.o"
	@echo "... src/Strati.i"
	@echo "... src/Strati.s"
	@echo "... src/StreamPowerLaw.o"
	@echo "... src/StreamPowerLaw.i"
	@echo "... src/StreamPowerLaw.s"
	@echo "... src/TerrainDerivatives.o"
	@echo "... src/TerrainDerivatives.i"
	@echo "... src/TerrainDerivatives.s"
	@echo "... src/Uplift.o"
	@echo "... src/Uplift.i"
	@echo "... src/Uplift.s"
	@echo "... src/VTK.o"
	@echo "... src/VTK.i"
	@echo "... src/VTK.s"
.PHONY : help



#=============================================================================
# Special targets to cleanup operation of make.

# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
	$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system


@cgw0814 I think you have to ask a colleague or friend to look over your shoulder. If the file exists and is readable, as apparently it is, it would not make sense for cmake to report that it can’t be read. Yet, that’s what cmake says is the case. I’m at a loss how that can happen, but I also don’t know how to debug the issue remotely. I think the only way forward is if you find someone local at your institution who has some experience with Unix/Linux and who can help you figure out why you get this error :frowning:

I’m sorry I don’t have any better ideas :frowning:

Best
W.

Hi~@bangerth

I think you’re right! I will find someone at my institute to solve the problem

still thank you again :slightly_smiling_face:

Regards,

GW