Coupler moduleΒΆ

The coupler module will interpolate ocean data and atmosphere data. The pseudo code of the coupler module is:

module mod_esmf_cpl

  # set coupler services
  subroutine CPL_SetServices

    call NUOPC_CompDerive(NUOPC_SetServices)
    call NUOPC_CompSpecialize(NUOPC_Label_ComputeRH, CPL_ComputeRH)
    call NUOPC_CompSpecialize(NUOPC_Label_ExecuteRH, CPL_ExecuteRH)
    call NUOPC_CompSpecialize(NUOPC_Label_ReleaseRH, CPL_ReleaseRH)

  end subroutine CPL_SetServices

  # initialize the coupler
  subroutine CPL_ComputeRH
    call NUOPC_ConnectorGet(srcFields, dstFields)
    call ESMF_FieldBundelGet(srcFields)
    call ESMF_FieldBundelGet(dstFields)
    call ESMF_FieldBundelRegridStore(srcFields, interDstFields)
    call ESMF_FieldBundelRegridStore(interDstFields, dstFields)
    call ESMF_StateAdd()
  end subroutine CPL_ComputeRH

  # run the coupler
  subroutine CPL_ExecuteRH
    call ESMF_FieldBundelRegrid(srcFields, interDstFields);
    call ESMF_FieldBundelRegrid(interDstFields, dstFields);
  end subroutine CPL_ExecuteRH

  # finalize the coupler
  subroutine CPL_ReleaseRH
    call ESMF_FieldBundelRegridRelease();
  end subroutine CPL_ReleaseRH

end module