initialization of cpl_scalars
- Dominant language
- Fortran
- Stars
- 35
- Forks
- 106
- Avg merge
- 6d 5h
- Merged PRs (30d)
- 4
Description
I've been debugging an issue in UFS where adding a new configuration setting (``write_restart_at_endofrun``) caused an intel debug test on only derecho to fail in med.F90, during the creation of the component dimemsions
https://github.com/ESCOMP/CMEPS/blob/47fb4e633a76ec6d60969b1af751f90790387246/mediator/med.F90#L2117-L2119
The fact that the failure was triggered by adding an unrelated config variable led me to believe the cause was access of some different (garbage) memory location. I traced the failure to the initialization of the ``cpl_scalar`` fields in the MOM6 cap.
All the caps I am aware of which utilize CMEPS use the same SetScalarField routine, including CMEPS
https://github.com/ESCOMP/CMEPS/blob/47fb4e633a76ec6d60969b1af751f90790387246/mediator/esmFlds.F90#L563
In MOM6, I was able to resolve the issue with
```
! num of scalar values
field = ESMF_FieldCreate(name=trim(scalar_field_name), grid=grid, typekind=ESMF_TYPEKIND_R8, &
ungriddedLBound=(/1/), ungriddedUBound=(/scalar_field_count/), gridToFieldMap=(/2/), rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
! initialize fldptr to zero
call ESMF_FieldGet(field, farrayPtr=fldptr2d, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
fldptr2d(:,:) = 0.0
```
Should this change also be made in CMEPS (as well as all other caps utilizing ``cpl_scalars``)? I don't *think* that ESMF automatically initializes a field when it is created (?).
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.