From 0d12a5020234559fcd10476382175cedf3644644 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Thu, 18 Mar 2021 16:11:17 +0100
Subject: [PATCH] Philippe 18/03/2021: workaround for an intel compiler bug
 (corrected in 19.1.2)

---
 src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90 | 22 ++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90
index 8696c0879..99d9d62e7 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -16,6 +16,7 @@
 !  P. Wautelet 10/11/2020: new data structures for netCDF dimensions
 !  P. Wautelet 26/11/2020: IO_Vdims_fill_nc4: support for empty kshape
 !  P. Wautelet 08/12/2020: add nbutotwrite
+!  P. Wautelet 18/03/2021: workaround for an intel compiler bug (corrected in 19.1.2)
 !-----------------------------------------------------------------
 #ifdef MNH_IOCDF4
 module mode_io_tools_nc4
@@ -691,7 +692,17 @@ if ( kidx == - 1 ) then
   if ( istatus /= NF90_NOERR ) &
     call IO_Err_handle_nc4( istatus, 'IO_Dim_find_create_nc4', 'NF90_DEF_DIM', Trim( tzncdims(inewsize)%cname) )
 
+#if 0
+  !Disabled here due to a bug in the Intel compiler (corrected in the 19.1.2 version)
   call Move_alloc( from = tzncdims, to = tpfile%tncdims%tdims )
+#else
+  !Do the Move_alloc by hand...
+  Deallocate( tpfile%tncdims%tdims )
+  Allocate( tpfile%tncdims%tdims(Size( tzncdims )) )
+  tpfile%tncdims%tdims(:) = tzncdims
+  Deallocate( tzncdims )
+#endif
+
   tpfile%tncdims%nmaxdims = inewsize
 
   kidx = inewsize
@@ -747,7 +758,16 @@ if ( idx == -1 ) then
   if ( istatus /= NF90_NOERR ) &
     call IO_Err_handle_nc4( istatus, 'IO_Strdimid_get_nc4', 'NF90_DEF_DIM', Trim( tzncdims(inewsize)%cname) )
 
+#if 0
+  !Disabled here due to a bug in the Intel compiler (corrected in the 19.1.2 version)
   call Move_alloc( from = tzncdims, to = tpfile%tncdims%tdims_str )
+#else
+  !Do the Move_alloc by hand...
+  Deallocate( tpfile%tncdims%tdims_str )
+  Allocate( tpfile%tncdims%tdims_str(Size( tzncdims )) )
+  tpfile%tncdims%tdims_str(:) = tzncdims(:)
+  Deallocate( tzncdims )
+#endif
   tpfile%tncdims%nmaxdims_str = inewsize
 
   idx = inewsize
-- 
GitLab