@@ -145,40 +145,41 @@ subroutine SetModelServices(driver, rc)
145
145
foundFlag= isFlag, rc= rc)
146
146
if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
147
147
line= __LINE__, file= FILENAME)) return ! bail out
148
- if (.not. isFlag) then
149
- call ESMF_LogSetError(ESMF_RC_ARG_INCOMP, &
150
- msg= " Must provide settings for: " // configKey(1 )// " :" // configKey(2 ), &
151
- line= __LINE__, file= FILENAME, rcToReturn= rc)
152
- return ! bail out
153
- endif
154
-
155
- ! Validate hconfigNode against ESMX/Driver controlled key vocabulary
156
- isFlag = ESMF_HConfigValidateMapKeys(hconfigNode, &
157
- vocabulary= [" attributes " , & ! ESMX_Driver option
158
- " componentList" , & ! ESMX_Driver option
159
- " runSequence " & ! ESMX_Driver option
160
- ], badKey= string1, rc= rc)
161
- if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
162
- line= __LINE__, file= FILENAME)) &
163
- call ESMF_Finalize(endflag= ESMF_END_ABORT)
164
- if (.not. isFlag) then
165
- call ESMF_LogSetError(ESMF_RC_ARG_WRONG, &
166
- msg= " An invalid key was found in config under ESMX/Driver (maybe a typo?): " // string1, &
167
- line= __LINE__, file= FILENAME, rcToReturn= rc)
168
- call ESMF_Finalize(endflag= ESMF_END_ABORT)
148
+ if (isFlag) then
149
+ ! Validate hconfigNode against ESMX/Driver controlled key vocabulary
150
+ isFlag = ESMF_HConfigValidateMapKeys(hconfigNode, &
151
+ vocabulary= [" attributes " , & ! ESMX_Driver option
152
+ " componentList" , & ! ESMX_Driver option
153
+ " runSequence " & ! ESMX_Driver option
154
+ ], badKey= string1, rc= rc)
155
+ if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
156
+ line= __LINE__, file= FILENAME)) &
157
+ call ESMF_Finalize(endflag= ESMF_END_ABORT)
158
+ if (.not. isFlag) then
159
+ call ESMF_LogSetError(ESMF_RC_ARG_WRONG, &
160
+ msg= " An invalid key was found in config under ESMX/Driver (maybe a typo?): " // string1, &
161
+ line= __LINE__, file= FILENAME, rcToReturn= rc)
162
+ call ESMF_Finalize(endflag= ESMF_END_ABORT)
163
+ endif
164
+ ! Ingest the generic component label list
165
+ isFlag = ESMF_HConfigIsSequence(hconfigNode, keyString= " componentList" , &
166
+ rc= rc)
167
+ if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
168
+ line= __LINE__, file= FILENAME)) return ! bail out
169
+ if (isFlag) then
170
+ componentList = ESMF_HConfigAsStringSeq(hconfigNode, stringLen= 32 , &
171
+ keyString= " componentList" , rc= rc)
172
+ if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
173
+ line= __LINE__, file= FILENAME)) return ! bail out
174
+ endif
175
+ call ESMF_HConfigDestroy(hconfigNode, rc= rc)
176
+ if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
177
+ line= __LINE__, file= FILENAME)) return ! bail out
169
178
endif
170
179
171
- ! Ingest the generic component label list
172
- componentList = ESMF_HConfigAsStringSeq(hconfigNode, stringLen= 32 , &
173
- keyString= " componentList" , rc= rc)
174
- if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
175
- line= __LINE__, file= FILENAME)) return ! bail out
176
- call ESMF_HConfigDestroy(hconfigNode, rc= rc)
177
- if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
178
- line= __LINE__, file= FILENAME)) return ! bail out
179
-
180
180
! Determine componentCount
181
- componentCount = size (componentList)
181
+ componentCount = 0 ! no components for unallocated componentList
182
+ if (allocated (componentList)) componentCount = size (componentList)
182
183
183
184
! Setup CompDef structure
184
185
allocate (CompDef(componentDefCount))
@@ -388,36 +389,31 @@ subroutine SetRunSequence(driver, rc)
388
389
foundFlag= isFlag, rc= rc)
389
390
if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
390
391
line= __LINE__, file= FILENAME)) return ! bail out
391
- if (.not. isFlag) then
392
- call ESMF_LogSetError(ESMF_RC_ARG_INCOMP, &
393
- msg= " Must provide settings for: " // configKey(1 )// " :" // configKey(2 ), &
394
- line= __LINE__, file= FILENAME, rcToReturn= rc)
395
- return ! bail out
396
- endif
397
-
398
- isFlag = ESMF_HConfigIsDefined(hconfigNode, keyString= " runSequence" , &
399
- rc= rc)
400
- if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
401
- line= __LINE__, file= FILENAME)) return ! bail out
402
392
if (isFlag) then
403
- hconfig = ESMF_HConfigCreateAt (hconfigNode, keyString= " runSequence" , &
393
+ isFlag = ESMF_HConfigIsDefined (hconfigNode, keyString= " runSequence" , &
404
394
rc= rc)
405
395
if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
406
396
line= __LINE__, file= FILENAME)) return ! bail out
407
- call NUOPC_DriverIngestRunSequence(driver, hconfig, &
408
- autoAddConnectors= .true. , rc= rc)
409
- if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
410
- line= __LINE__, file= FILENAME)) return ! bail out
411
- call ESMF_HConfigDestroy(hconfig, rc= rc)
397
+ if (isFlag) then
398
+ hconfig = ESMF_HConfigCreateAt(hconfigNode, keyString= " runSequence" , &
399
+ rc= rc)
400
+ if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
401
+ line= __LINE__, file= FILENAME)) return ! bail out
402
+ call NUOPC_DriverIngestRunSequence(driver, hconfig, &
403
+ autoAddConnectors= .true. , rc= rc)
404
+ if (ESMF_LogFoundError(rcToCheck= rc, &
405
+ msg= " Unable to ingest RunSequence!" , &
406
+ line= __LINE__, file= FILENAME)) return ! bail out
407
+ call ESMF_HConfigDestroy(hconfig, rc= rc)
408
+ if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
409
+ line= __LINE__, file= FILENAME)) return ! bail out
410
+ endif
411
+ ! clean-up
412
+ call ESMF_HConfigDestroy(hconfigNode, rc= rc)
412
413
if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
413
414
line= __LINE__, file= FILENAME)) return ! bail out
414
415
endif
415
416
416
- ! clean-up
417
- call ESMF_HConfigDestroy(hconfigNode, rc= rc)
418
- if (ESMF_LogFoundError(rcToCheck= rc, msg= ESMF_LOGERR_PASSTHRU, &
419
- line= __LINE__, file= FILENAME)) return ! bail out
420
-
421
417
end subroutine SetRunSequence
422
418
423
419
!- ----------------------------------------------------------------------------
0 commit comments