11! > @brief Implementation of ESMF Component utilities
22!
33! This computer program is part of MOSSCO.
4- ! > @copyright 2021-2022 Helmholtz-Zentrum Hereon
5- ! > @copyright 2014-2021 Helmholtz-Zentrum Geesthacht
4+ ! > @copyright 2021-2025 Helmholtz-Zentrum Hereon GmbH
5+ ! > @copyright 2014-2021 Helmholtz-Zentrum Geesthacht GmbH
66! > @copyright 2014-2021 Institut für Ostseeforschung Warnemünde
77! > @author Carsten Lemmen <carsten.lemmen@hereon.de>
88! > @author Knut Klingbeil <knut.klingbeil@io-warnemuende.de>
@@ -1137,145 +1137,6 @@ subroutine MOSSCO_GridCompLog(gridComp, kwe, log, rc)
11371137 endif
11381138 endif
11391139
1140- #if ESMF_VERSION_MAJOR < 8
1141- call ESMF_AttributeGet(gridComp, count= count , attCountFlag= ESMF_ATTGETCOUNT_ATTLINK, rc= localrc)
1142- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc)) &
1143- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1144- write (message, ' (A,I2,A)' ) trim (name)// ' contains ' , count, ' linked, '
1145-
1146- ! call ESMF_AttributeGet(gridComp, count=count , attCountFlag=ESMF_ATTGETCOUNT_TOTAL, rc=localrc)
1147- ! if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) &
1148- ! call ESMF_Finalize(rc=localrc, endflag=ESMF_END_ABORT)
1149- ! write(message, '(A,I2,A)') trim(name)//' contains ', count, ' total, '
1150-
1151- call ESMF_AttributeGet(gridComp, count= count, attCountFlag= ESMF_ATTGETCOUNT_ATTPACK, rc= localrc)
1152- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc)) &
1153- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1154- write (message, ' (A,I2,A)' ) trim (message), count, ' packed, and '
1155-
1156- call ESMF_AttributeGet(gridComp, count= count, attCountFlag= ESMF_ATTGETCOUNT_ATTRIBUTE, rc= localrc)
1157- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc)) &
1158- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1159- write (message, ' (A,I2,A)' ) trim (message), count, ' single attributes'
1160-
1161- if (present (log)) then
1162- call ESMF_LogWrite(trim (message), ESMF_LOGMSG_INFO, log= log)
1163- else
1164- call ESMF_LogWrite(trim (message), ESMF_LOGMSG_INFO)
1165- endif
1166-
1167- call ESMF_AttributeGet(gridComp, count= count, rc= localrc)
1168- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1169- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1170-
1171- do i= 1 , count
1172- call ESMF_AttributeGet(gridComp, attributeIndex= i , name= attributeName, rc= localrc)
1173- if (localrc /= ESMF_SUCCESS) cycle
1174-
1175- write (message,' (A)' ) trim (name)// ' :'
1176- call MOSSCO_MessageAdd(message,trim (attributeName)// ' =' )
1177-
1178- call ESMF_AttributeGet(gridComp, name= attributeName, typekind= typekind, itemCount= itemCount, rc= localrc)
1179- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1180- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1181-
1182- if (typekind== ESMF_TYPEKIND_Logical) then
1183- call MOSSCO_MessageAdd(message,' (L)' )
1184- allocate (logicalValueList(itemCount))
1185- call ESMF_AttributeGet(gridComp, name= attributeName, valueList= logicalValueList, rc= localrc)
1186- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1187- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1188-
1189- write (string, ' (L)' ) logicalValueList(1 )
1190- call MOSSCO_MessageAdd(message,' ' // trim (string))
1191- do j= 2 , itemCount-1
1192- write (string, ' (L)' ) logicalValueList(j)
1193- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1194- enddo
1195- deallocate (logicalValueList)
1196-
1197- elseif (typekind== ESMF_TYPEKIND_CHARACTER) then
1198- if (allocated (characterValueList)) deallocate (characterValueList)
1199- allocate (characterValueList(itemCount))
1200- call ESMF_AttributeGet(gridComp, name= attributeName, valueList= characterValueList, rc= localrc)
1201- if (localrc /= ESMF_SUCCESS) then
1202- ! (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) then
1203- ! call ESMF_Finalize(rc=localrc, endflag=ESMF_END_ABORT)
1204- ! >@ todo: how to deal with very long attributes that don't fit into valueList?
1205- rc= ESMF_SUCCESS
1206- endif
1207-
1208- call MOSSCO_MessageAdd(message,' "' // trim (characterValueList(1 ))// ' "' )
1209- do j= 2 , itemCount-1
1210- call MOSSCO_MessageAdd(message,' , "' // trim (characterValueList(j))// ' "' )
1211- enddo
1212- if (allocated (characterValueList)) deallocate (characterValueList)
1213-
1214- elseif (typekind== ESMF_TYPEKIND_I4) then
1215- call MOSSCO_MessageAdd(message,' (I4)' )
1216- allocate (integer4 ValueList(itemCount))
1217- call ESMF_AttributeGet(gridComp, name= attributeName, valueList= integer4 ValueList, rc= localrc)
1218- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1219- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1220-
1221- write (string, ' (I6.6)' ) integer4 ValueList(1 )
1222- call MOSSCO_MessageAdd(message,' ' // trim (string))
1223- do j= 2 , itemCount-1
1224- write (string, ' (I6.6)' ) integer4 ValueList(j)
1225- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1226- enddo
1227- deallocate (integer4 ValueList)
1228- elseif (typekind== ESMF_TYPEKIND_I8) then
1229- call MOSSCO_MessageAdd(message,' (I8)' )
1230- allocate (integer8 ValueList(itemCount))
1231- call ESMF_AttributeGet(gridComp, name= attributeName, valueList= integer8 ValueList, rc= localrc)
1232- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1233- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1234-
1235- write (string, * ) integer8 ValueList(1 )
1236- call MOSSCO_MessageAdd(message,' ' // trim (string))
1237- do j= 2 , itemCount-1
1238- write (string, * ) integer8 ValueList(j)
1239- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1240- enddo
1241- deallocate (integer8 ValueList)
1242- elseif (typekind== ESMF_TYPEKIND_R4 ) then
1243- call MOSSCO_MessageAdd(message,' (R4)' )
1244- allocate (real4ValueList(itemCount))
1245- call ESMF_AttributeGet(gridComp, name= attributeName, valueList= real4ValueList, rc= localrc)
1246- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1247- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1248-
1249- write (string, ' (ES9.2)' ) real4ValueList(1 )
1250- call MOSSCO_MessageAdd(message,' ' // trim (string))
1251- do j= 2 , itemCount-1
1252- write (string, ' (ES9.2)' ) real4ValueList(j)
1253- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1254- enddo
1255- deallocate (real4ValueList)
1256- elseif (typekind== ESMF_TYPEKIND_R8 ) then
1257- call MOSSCO_MessageAdd(message,' (R8)' )
1258- allocate (real8ValueList(itemCount))
1259- call ESMF_AttributeGet(gridComp, name= attributeName, valueList= real8ValueList, rc= localrc)
1260- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1261- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1262-
1263- write (string, ' (ES9.2)' ) real8ValueList(1 )
1264- call MOSSCO_MessageAdd(message,' ' // trim (string))
1265- do j= 2 , itemCount-1
1266- write (string, ' (ES9.2)' ) real8ValueList(j)
1267- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1268- enddo
1269- deallocate (real8ValueList)
1270- endif
1271- if (present (log)) then
1272- call ESMF_LogWrite(trim (message), ESMF_LOGMSG_INFO, log= log)
1273- else
1274- call ESMF_LogWrite(trim (message), ESMF_LOGMSG_INFO)
1275- endif
1276- enddo
1277- #else ! ESMF version >= 8
1278-
12791140 if (present (log)) then
12801141 call MOSSCO_InfoLogObject(gridComp, log= log, rc= localrc)
12811142 _MOSSCO_LOG_AND_FINALIZE_ON_ERROR_(rc_)
@@ -1291,7 +1152,6 @@ subroutine MOSSCO_GridCompLog(gridComp, kwe, log, rc)
12911152 else
12921153 call ESMF_LogWrite(trim (message), ESMF_LOGMSG_INFO)
12931154 endif
1294- #endif
12951155
12961156 end subroutine MOSSCO_GridCompLog
12971157
@@ -1404,154 +1264,13 @@ subroutine MOSSCO_CplCompLog(cplComp, kwe, log, rc)
14041264 endif
14051265 endif
14061266
1407- #if ESMF_VERSION_MAJOR < 8
1408- call ESMF_AttributeGet(cplComp, count= count , attCountFlag= ESMF_ATTGETCOUNT_ATTLINK, rc= localrc)
1409- _MOSSCO_LOG_AND_FINALIZE_ON_ERROR_(rc_)
1410- write (message, ' (A,I2,A)' ) trim (name)// ' contains ' , count, ' linked, '
1411- ! call ESMF_AttributeGet(cplComp, count=count , attCountFlag=ESMF_ATTGETCOUNT_TOTAL, rc=localrc)
1412- ! _MOSSCO_LOG_AND_FINALIZE_ON_ERROR_(rc_)
1413- ! write(message, '(A,I2,A)') trim(name)//' contains ', count, ' total, '
1414-
1415- call ESMF_AttributeGet(cplComp, count= count, attCountFlag= ESMF_ATTGETCOUNT_ATTPACK, rc= localrc)
1416- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc)) &
1417- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1418- write (message, ' (A,I2,A)' ) trim (message), count, ' packed, and '
1419-
1420- call ESMF_AttributeGet(cplComp, count= count, attCountFlag= ESMF_ATTGETCOUNT_ATTRIBUTE, rc= localrc)
1421- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc)) &
1422- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1423- write (message, ' (A,I2,A)' ) trim (message), count, ' single attributes'
1424-
1425- if (present (log)) then
1426- call ESMF_LogWrite(trim (message), ESMF_LOGMSG_INFO, log= log)
1427- else
1428- call ESMF_LogWrite(trim (message), ESMF_LOGMSG_INFO, log= log)
1429- endif
1430-
1431- call ESMF_AttributeGet(cplComp, count= count, rc= localrc)
1432- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1433- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1434-
1435- do i= 1 , count
1436- call ESMF_AttributeGet(cplComp, attributeIndex= i , name= attributeName, rc= localrc)
1437- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1438- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1439-
1440- write (message,' (A)' ) trim (name)// ' :'
1441- call MOSSCO_MessageAdd(message,trim (attributeName)// ' =' )
1442-
1443- call ESMF_AttributeGet(cplComp, name= attributeName, typekind= typekind, itemCount= itemCount, rc= localrc)
1444- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1445- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1446-
1447- if (typekind== ESMF_TYPEKIND_Logical) then
1448- call MOSSCO_MessageAdd(message,' (L)' )
1449- allocate (logicalValueList(itemCount))
1450- call ESMF_AttributeGet(cplComp, name= attributeName, valueList= logicalValueList, rc= localrc)
1451- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1452- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1453-
1454- write (string, ' (L)' ) logicalValueList(1 )
1455- call MOSSCO_MessageAdd(message,' ' // trim (string))
1456- do j= 2 , itemCount-1
1457- write (string, ' (L)' ) logicalValueList(j)
1458- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1459- enddo
1460- deallocate (logicalValueList)
1461-
1462- elseif (typekind== ESMF_TYPEKIND_CHARACTER) then
1463- if (allocated (characterValueList)) deallocate (characterValueList)
1464- allocate (characterValueList(itemCount))
1465- call ESMF_AttributeGet(cplComp, name= attributeName, valueList= characterValueList, rc= localrc)
1466- if (localrc /= ESMF_SUCCESS) then
1467- ! (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) then
1468- ! call ESMF_Finalize(rc=localrc, endflag=ESMF_END_ABORT)
1469- ! >@ todo: how to deal with very long attributes that don't fit into valueList?
1470- rc= ESMF_SUCCESS
1471- endif
1472-
1473- call MOSSCO_MessageAdd(message, ' "' // trim (characterValueList(1 ))// ' "' )
1474- do j= 2 , itemCount-1
1475- call MOSSCO_MessageAdd(message, ' , "' // trim (characterValueList(j))// ' "' )
1476- enddo
1477- if (allocated (characterValueList)) deallocate (characterValueList)
1478-
1479- elseif (typekind== ESMF_TYPEKIND_I4) then
1480- call MOSSCO_MessageAdd(message,' (I4)' )
1481- allocate (integer4 ValueList(itemCount))
1482- call ESMF_AttributeGet(cplComp, name= attributeName, valueList= integer4 ValueList, rc= localrc)
1483- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1484- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1485-
1486- write (string, ' (I6.6)' ) integer4 ValueList(1 )
1487- call MOSSCO_MessageAdd(message,' ' // trim (string))
1488- do j= 2 , itemCount-1
1489- write (string, ' (I6.6)' ) integer4 ValueList(j)
1490- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1491- enddo
1492- if (allocated (integer4 ValueList)) deallocate (integer4 ValueList)
1493-
1494- elseif (typekind== ESMF_TYPEKIND_I8) then
1495- call MOSSCO_MessageAdd(message,' (I8)' )
1496- allocate (integer8 ValueList(itemCount))
1497- call ESMF_AttributeGet(cplComp, name= attributeName, valueList= integer8 ValueList, rc= localrc)
1498- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1499- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1500-
1501- write (string, * ) integer8 ValueList(1 )
1502- call MOSSCO_MessageAdd(message,' ' // trim (string))
1503- do j= 2 , itemCount-1
1504- write (string, * ) integer8 ValueList(j)
1505- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1506- enddo
1507- deallocate (integer8 ValueList)
1508-
1509- elseif (typekind== ESMF_TYPEKIND_R4 ) then
1510- call MOSSCO_MessageAdd(message,' R4)' )
1511- allocate (real4ValueList(itemCount))
1512- call ESMF_AttributeGet(cplComp, name= attributeName, valueList= real4ValueList, rc= localrc)
1513- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1514- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1515-
1516- write (string, ' (ES9.2)' ) real4ValueList(1 )
1517- call MOSSCO_MessageAdd(message,' ' // trim (string))
1518- do j= 2 , itemCount-1
1519- write (string, ' (ES9.2)' ) real4ValueList(j)
1520- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1521- enddo
1522- deallocate (real4ValueList)
1523-
1524- elseif (typekind== ESMF_TYPEKIND_R8 ) then
1525- call MOSSCO_MessageAdd(message,' (R8)' )
1526- allocate (real8ValueList(itemCount))
1527- call ESMF_AttributeGet(cplComp, name= attributeName, valueList= real8ValueList, rc= localrc)
1528- if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn= rc_)) &
1529- call ESMF_Finalize(rc= localrc, endflag= ESMF_END_ABORT)
1530-
1531- write (string, ' (ES9.2)' ) real8ValueList(1 )
1532- call MOSSCO_MessageAdd(message,' ' // trim (string))
1533- do j= 2 , itemCount-1
1534- write (string, ' (ES9.2)' ) real8ValueList(j)
1535- call MOSSCO_MessageAdd(message,' , ' // trim (string))
1536- enddo
1537- deallocate (real8ValueList)
1538-
1539- endif
1540- if (present (log)) then
1541- call ESMF_LogWrite(trim (message), ESMF_LOGMSG_INFO, log= log)
1542- else
1543- call ESMF_LogWrite(trim (message), ESMF_LOGMSG_INFO)
1544- endif
1545- enddo
1546- #else
15471267 if (present (log)) then
15481268 call MOSSCO_InfoLogObject(cplComp, log= log, rc= localrc)
15491269 _MOSSCO_LOG_AND_FINALIZE_ON_ERROR_(rc_)
15501270 else
15511271 call MOSSCO_InfoLogObject(cplComp, rc= localrc)
15521272 _MOSSCO_LOG_AND_FINALIZE_ON_ERROR_(rc_)
15531273 endif
1554- #endif
15551274
15561275 end subroutine MOSSCO_CplCompLog
15571276
0 commit comments