From 1b60bc14e84062d24ebd83dc8fe7aef00e4d7f48 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sun, 10 Dec 2023 22:22:19 +0100 Subject: [PATCH] more flexibility for setting default values --- src/YAML_types.f90 | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/YAML_types.f90 b/src/YAML_types.f90 index d73778c77..1db64eeeb 100644 --- a/src/YAML_types.f90 +++ b/src/YAML_types.f90 @@ -303,7 +303,11 @@ subroutine YAML_types_selfTest() error stop 'dict_get_as1dReal_shape list' if (any(dNeq(d%get_as1dReal('non-existing',a,[2,3]),a))) & - error stop 'dict_get_as1dReal_shape default' + error stop 'dict_get_as1dReal_shape default individual' + + a = real([42.0, 42.0, 5.0, 5.0, 5.0],pREAL) + if (any(dNeq(d%get_as1dReal('non-existing',[42._pREAL, 5._pREAL],[2,3]),a))) & + error stop 'dict_get_as1dReal_shape default group' if (any(dNeq(d%get_as1dReal('scalar',requiredShape=[3,5,2]),misc_ones(10)))) & error stop 'dict_get_as1dReal_shape scalar' @@ -1262,9 +1266,15 @@ function tDict_get_as1dReal_shape(self,k,defaultVal,requiredShape) result(nodeAs end do end select elseif (present(defaultVal)) then - if (size(defaultVal) /= size(nodeAs1dReal)) & + if (size(defaultVal) == size(nodeAs1dReal)) then + nodeAs1dReal = defaultVal + elseif (size(defaultVal) == size(requiredShape)) then + do i = 1, size(requiredShape) + nodeAs1dReal(sum(requiredShape(:i-1))+1:sum(requiredShape(:i))) = defaultVal(i) + end do + else call IO_error(709,'default values not of required shape') - nodeAs1dReal = defaultVal + end if else call IO_error(143,ext_msg=k) end if