View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide

Example generated Driver

program ESMFDriver

  use ESMF_Mod
  use user_model2, only : user_model2_userm2_register => userm2_register
  use user_model1, only : user_model1_userm1_register => userm1_register
  use gencpl, only : gencpl_register => register

  implicit none

  type(ESMF_VM) :: vm
  integer :: localrc
  type(ESMF_GridComp) :: comp_user_model2
  type(ESMF_GridComp) :: comp_user_model1
  type(ESMF_CplComp) :: cpl_gencpl
  type(ESMF_State) :: state_exp_user_model1
  type(ESMF_State) :: state_imp_user_model2
  
  call ESMF_Initialize(vm=vm, rc=localrc)
  comp_user_model2 = ESMF_GridCompCreate(name="user_model2", petList=(/4, 5/), rc=localrc)
  comp_user_model1 = ESMF_GridCompCreate(name="user_model1", petList=(/0, 1, 2, 3/), rc=localrc)
  cpl_gencpl = ESMF_CplCompCreate(name="gencpl", petList=(/0, 1, 2, 3, 4, 5/), rc=localrc)

  call ESMF_GridCompSetServices(comp_user_model2, user_model2_userm2_register, localrc)
  call ESMF_GridCompSetServices(comp_user_model1, user_model1_userm1_register, localrc)
  call ESMF_CplCompSetServices(cpl_gencpl, gencpl_register, localrc)

  state_exp_user_model1 = ESMF_StateCreate("state_exp_user_model1", ESMF_STATE_EXPORT, rc=localrc)
  state_imp_user_model2 = ESMF_StateCreate("state_imp_user_model2", ESMF_STATE_IMPORT, rc=localrc)

  call ESMF_GridCompInitialize(comp_user_model2, importState=state_imp_user_model2, rc=localrc)
  call ESMF_GridCompInitialize(comp_user_model1, exportState=state_exp_user_model1, rc=localrc)
  call ESMF_CplCompInitialize(cpl_gencpl, importState=state_exp_user_model1, exportState=state_imp_user_model2, rc=localrc)

  call ESMF_GridCompRun(comp_user_model1, exportState=state_exp_user_model1, rc=localrc)
  call ESMF_CplCompRun(cpl_gencpl, importState=state_exp_user_model1, exportState=state_imp_user_model2, rc=localrc)
  call ESMF_GridCompRun(comp_user_model2, importState=state_imp_user_model2, rc=localrc)

  call ESMF_GridCompFinalize(comp_user_model2, importState=state_imp_user_model2, rc=localrc)
  call ESMF_GridCompFinalize(comp_user_model1, exportState=state_exp_user_model1, rc=localrc)
  call ESMF_CplCompFinalize(cpl_gencpl, importState=state_exp_user_model1, exportState=state_imp_user_model2, rc=localrc)
  call ESMF_GridCompDestroy(comp_user_model2, rc=localrc)
  call ESMF_GridCompDestroy(comp_user_model1, rc=localrc)
  call ESMF_CplCompDestroy(cpl_gencpl, rc=localrc)
  call ESMF_StateDestroy(state_imp_user_model2, rc=localrc)
  call ESMF_StateDestroy(state_exp_user_model1, rc=localrc)
  call ESMF_Finalize()
  print , "All done."
  
  
end program ESMFDriver


Link to this Page