engine_teardown Subroutine

public subroutine engine_teardown(engine)

Close the diag NetCDF stream (if one was opened), release the process-global ocean-halo and fold-exchange module state, then release host-side allocations. Call after engine_exit_data.

Arguments

Type IntentOptional Attributes Name
type(ocean_engine_t), intent(inout) :: engine

Calls

proc~~engine_teardown~~CallsGraph proc~engine_teardown engine_teardown proc~close_stream close_stream proc~engine_teardown->proc~close_stream proc~ocean_fold_exchange_destroy ocean_fold_exchange_destroy proc~engine_teardown->proc~ocean_fold_exchange_destroy proc~ocean_geothermal_destroy ocean_geothermal_t%ocean_geothermal_destroy proc~engine_teardown->proc~ocean_geothermal_destroy proc~ocean_halo_destroy ocean_halo_destroy proc~engine_teardown->proc~ocean_halo_destroy proc~nc_close nc_close proc~close_stream->proc~nc_close proc~fold_plan_destroy fold_plan_t%fold_plan_destroy proc~ocean_fold_exchange_destroy->proc~fold_plan_destroy nf90_close nf90_close proc~nc_close->nf90_close proc~nc_check nc_check proc~nc_close->proc~nc_check nf90_strerror nf90_strerror proc~nc_check->nf90_strerror proc~fail fail proc~nc_check->proc~fail error error proc~fail->error proc~error_ring_push error_ring_push proc~fail->proc~error_ring_push

Called by

proc~~engine_teardown~~CalledByGraph proc~engine_teardown engine_teardown proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_teardown proc~driver_validate driver_validate proc~driver_validate->proc~engine_teardown proc~rdb_ocean_destroy rdb_ocean_destroy proc~rdb_ocean_destroy->proc~engine_teardown proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Source Code

   subroutine engine_teardown(engine)
      !! Close the diag NetCDF stream (if one was opened), release the
      !! process-global ocean-halo and fold-exchange module state, then release host-side
      !! allocations. Call after `engine_exit_data`.
      type(ocean_engine_t), intent(inout) :: engine

#ifndef RDB_NO_NETCDF
      if (engine%diag_enabled) call close_stream(engine%state%diag)
#endif
      call ocean_halo_destroy()
      call ocean_fold_exchange_destroy()
      call engine%geo%destroy()
      call engine%state%destroy()
      engine%is_setup = .false.
      engine%warm_restart = .false.
   end subroutine engine_teardown