Our small Linux cluster recently had the PG Fortran compilers updated to v19.10, and now the CESM code which had previously worked with the older compiler version now crashes in the land model (CLM) initialization.
The totalview debugger indicates a seg fault at this function:
function create_cnfire_method( NLFilename ) result(cnfire_method)
select case (trim(fire_method))
case (“nofire”)
allocate(cnfire_method, source=cnfire_nofire_type())
case (“li2014qianfrc”)
allocate(cnfire_method, source=cnfire_li2014_type())
case (“li2016crufrc”)
allocate(cnfire_method, source=cnfire_li2016_type())
case default
write(iulog,*) subname//’ ERROR: unknown method: ', fire_method
call endrun(msg=errMsg(sourcefile, LINE))
end select
call cnfire_method%CNFireReadNML( NLFilename )
This function is triggered by this allocate statment:
allocate(this%cnfire_method, &
source=create_cnfire_method(NLFilename))
The cnfire_method_type is defined this way:
type, abstract :: cnfire_method_type
logical, public :: need_lightning_and_popdens = .true. ! If need lightning and population density
contains
! Initialize the fire datasets
procedure(CNFireInit_interface) , public, deferred :: CNFireInit
! Read namelist for the fire datasets
procedure(CNFireReadNML_interface), public, deferred :: CNFireReadNML
! Interpolate the fire datasets
procedure(CNFireInterp_interface) , public, deferred :: CNFireInterp
! Figure out the fire area
procedure(CNFireArea_interface) , public, deferred :: CNFireArea
! Figure out the fire fluxes
procedure(CNFireFluxes_interface) , public, deferred :: CNFireFluxes
end type cnfire_method_type
Thanks,
Mark Branson