100 integer,
intent(out) :: rc
102 TYPE(esmf_gridcomp) :: driver
103 TYPE(esmf_config) :: config
107 character (len=*),
parameter :: myfile = &
108 & __FILE__//
", ESM_SetServices"
115 WRITE (
trac,
'(a,a,i0)')
'==> Entering ESM_SetServices', &
125 CALL nuopc_compderive (driver, &
126 & nuopc_setservices, &
128 IF (esmf_logfounderror(rctocheck=rc, &
129 & msg=esmf_logerr_passthru, &
141 CALL nuopc_compspecialize (driver, &
142 & speclabel=nuopc_label_setmodelservices,&
145 IF (esmf_logfounderror(rctocheck=rc, &
146 & msg=esmf_logerr_passthru, &
154 CALL nuopc_compspecialize (driver, &
155 & speclabel=nuopc_label_setrunsequence, &
158 IF (esmf_logfounderror(rctocheck=rc, &
159 & msg=esmf_logerr_passthru, &
172 config = esmf_configcreate(rc=rc)
173 IF (esmf_logfounderror(rctocheck=rc, &
174 & msg=esmf_logerr_passthru, &
182 CALL esmf_configloadfile(config, &
185 IF (esmf_logfounderror(rctocheck=rc, &
186 & msg=esmf_logerr_passthru, &
194 CALL esmf_gridcompset(driver, &
197 IF (esmf_logfounderror(rctocheck=rc, &
198 & msg=esmf_logerr_passthru, &
205 WRITE (
trac,
'(a,a,i0)')
'<== Exiting ESM_SetServices', &
224 integer,
intent(out) :: rc
226 TYPE (esmf_gridcomp) :: driver
232 character (len=*),
parameter :: myfile = &
233 & __FILE__//
", ESM_SetModelServices"
235 TYPE (esmf_gridcomp) :: model
236 TYPE (esmf_clock) :: clock
237 TYPE (esmf_cplcomp) :: connector
244 WRITE (
trac,
'(a,a,i0)')
'==> Entering ESM_SetModelServices', &
255 IF (
models(i)%IsActive)
THEN
256 SELECT CASE (trim(
clabel(i)))
258 CALL nuopc_driveraddcomp (driver, &
261 & petlist=
models(i)%PETlist(:), &
264 IF (esmf_logfounderror(rctocheck=rc, &
265 & msg=esmf_logerr_passthru, &
272 CALL nuopc_driveraddcomp (driver, &
275 & petlist=
models(i)%PETlist(:), &
278 IF (esmf_logfounderror(rctocheck=rc, &
279 & msg=esmf_logerr_passthru, &
287 CALL nuopc_driveraddcomp (driver, &
290 & petlist=
models(i)%PETlist(:), &
293 IF (esmf_logfounderror(rctocheck=rc, &
294 & msg=esmf_logerr_passthru, &
302 CALL nuopc_driveraddcomp (driver, &
305 & petlist=
models(i)%PETlist(:), &
308 IF (esmf_logfounderror(rctocheck=rc, &
309 & msg=esmf_logerr_passthru, &
317 CALL nuopc_driveraddcomp (driver, &
320 & petlist=
models(i)%PETlist(:), &
323 IF (esmf_logfounderror(rctocheck=rc, &
324 & msg=esmf_logerr_passthru, &
335 CALL esmf_attributeset (model, &
336 & name=
"Verbosity", &
339 IF (esmf_logfounderror(rctocheck=rc, &
340 & msg=esmf_logerr_passthru, &
356 CALL nuopc_driveraddcomp (driver, &
357 & srccomplabel=trim(
models(i)%name), &
358 & dstcomplabel=trim(
models(j)%name), &
362 IF (esmf_logfounderror(rctocheck=rc, &
363 & msg=esmf_logerr_passthru, &
369 CALL esmf_attributeset (connector, &
370 & name=
"Verbosity", &
373 IF (esmf_logfounderror(rctocheck=rc, &
374 & msg=esmf_logerr_passthru, &
396 & name=
'ESM_clock', &
398 IF (esmf_logfounderror(rctocheck=rc, &
399 & msg=esmf_logerr_passthru, &
410 & name=
'ESM_clock', &
412 IF (esmf_logfounderror(rctocheck=rc, &
413 & msg=esmf_logerr_passthru, &
421 CALL esmf_gridcompset (driver, &
424 IF (esmf_logfounderror(rctocheck=rc, &
425 & msg=esmf_logerr_passthru, &
432 WRITE (
trac,
'(a,a,i0)')
'<== Exiting ESM_SetModelServices', &
452 integer,
intent(out) :: rc
454 TYPE (esmf_gridcomp) :: driver
460 real(r8) :: time_step
462 character (len=100) :: name
464 character (len=*),
parameter :: myfile = &
465 & __FILE__//
", ESM_SetRunSequence"
467 TYPE (esmf_clock) :: clock
468 TYPE (esmf_config) :: config
469 TYPE (esmf_timeinterval) ::
timestep
470 TYPE (nuopc_freeformat) :: runseqff
477 WRITE (
trac,
'(a,a,i0)')
'==> Entering ESM_SetRunSequence', &
489 CALL esmf_gridcompget (driver, &
491 & localpet=localpet, &
493 IF (esmf_logfounderror(rctocheck=rc, &
494 & msg=esmf_logerr_passthru, &
502 CALL esmf_gridcompget (driver, &
505 IF (esmf_logfounderror(rctocheck=rc, &
506 & msg=esmf_logerr_passthru, &
512 runseqff = nuopc_freeformatcreate(config, &
513 & label=
'runSeq::', &
515 IF (esmf_logfounderror(rctocheck=rc, &
516 & msg=esmf_logerr_passthru, &
524 CALL nuopc_driveringestrunsequence (driver, &
527 IF (esmf_logfounderror(rctocheck=rc, &
528 & msg=esmf_logerr_passthru, &
531 IF (localpet.eq.0)
THEN
539 CALL esmf_gridcompget (driver, &
542 IF (esmf_logfounderror(rctocheck=rc, &
543 & msg=esmf_logerr_passthru, &
552 CALL esmf_clockget (clock, &
555 IF (esmf_logfounderror(rctocheck=rc, &
556 & msg=esmf_logerr_passthru, &
562 CALL esmf_timeintervalget (
timestep, &
565 IF (esmf_logfounderror(rctocheck=rc, &
566 & msg=esmf_logerr_passthru, &
576 IF (localpet.eq.0)
THEN
589 CALL nuopc_driverprint (driver, &
590 & orderflag=.true., &
592 IF (esmf_logfounderror(rctocheck=rc, &
593 & msg=esmf_logerr_passthru, &
603 CALL nuopc_freeformatdestroy (runseqff, &
605 IF (esmf_logfounderror(rctocheck=rc, &
606 & msg=esmf_logerr_passthru, &
613 WRITE (
trac,
'(a,a,i0)')
'<== Exiting ESM_SetRunSequence', &
618 10
FORMAT (/,
' ESM_SetRunSequence - Error while ingesting', &
619 &
' RunSequence configuration file:',/,22x,a, &
620 & /,22x,
'Check if connections (->) between components ' &
621 &
' are needed or not.')
622 20
FORMAT (/,
' ESM_SetRunSequence - Inconsistent coupling time', &
623 &
' step (seconds) from ingested RunSequence:', &
624 & /,22x,
'TimeStep = ',f15.8,2x,
'(in ',a,
')', &
625 & /,22x,
'TimeStep = ',f15.8,2x,
'(in ',a,
')', &
626 & /,22x,
'Correct either input file to the desired value.', &
627 & /,22x,
'The value needs to be the same in both files!')