Template:CMI Example CMI initialize Fortran

From CSDMS
! Insert-Code-Here {edu.csdms.models.LTRANS.CMI_initialize} (CMI_initialize method)

! This method has not been implemented
!
  type(edu_csdms_models_LTRANS_wrap) :: dp
  type(edu_csdms_tools_IRFPortQueue_t) :: port_queue
  type(edu_csdms_ports_CMIPort_t) :: cmi_port
!  type(sidl_string_1d) :: properties
  type(edu_csdms_ports_CMIPort_t) :: ocean_port
  type(sidl__array) :: return_sidl_array
  integer :: long_var_names_array_size
  integer :: i


  call edu_csdms_models_LTRANS__get_data_m(self, dp)

  print *, "LTRANS_CMI> Initializing LTRANS component"
  dp%d_private_data%cmi_status = 'I'

  !call get_port("Ocean", ocean_port)

  call cast(self, cmi_port, exception)

  ! This will initialize the IRFPortQueue
  print *, "LTRANS_CMI> Initialize port queue"
  call new(port_queue, exception)
  call initialize_cmi(port_queue, dp%d_private_data%d_services, cmi_port, exception)

  ! Add ports to the IRFPortQueue
  print *, "LTRANS_CMI> Adding ports to IRFPortQueue"
  print *, "LTRANS_CMI> Added Ports: ", trim(dp%d_private_data%CMI_PORT_NAMES)
  call add_ports(port_queue, dp%d_private_data%CMI_PORT_NAMES, exception)

  print *, "LTRANS_CMI> Connecting uses ports in queue and Initialize uses ports"
  call connect_cmi_ports(port_queue, exception)

  ! Initializing the uses ports
  ! print *, "LTRANS_CMI> Initialize uses ports"
  ! Commenting 'initialize_ports' of irfportqueu. The properties arguement is causing a segmentation fault.
  ! call initialize_ports(port_queue, properties, exception)

  print *, "LTRANS_CMI> Getting the uses port Ocean"
  call get_cmi_port(port_queue, "Ocean", ocean_port, exception)

  !print *, "LTRANS_CMI> Get values of ROMS Grid"
  !dp%d_private_data%long_var_names(5) = "angle_between_xi_axis_and_east"
  !dp%d_private_data%long_var_names(6) = "bathymetry_at_rho_points"
  !dp%d_private_data%long_var_names(7) = "latitude_of_rho_points"
  !dp%d_private_data%long_var_names(8) = "latitude_of_u_points"
  !dp%d_private_data%long_var_names(9) = "latitude_of_v_points"
  !dp%d_private_data%long_var_names(10) = "longitude_of_rho_points"
  !dp%d_private_data%long_var_names(11) = "longitude_of_u_points"
  !dp%d_private_data%long_var_names(12) = "longitude_of_v_points"
  !dp%d_private_data%long_var_names(13) = "mask_on_rho_points"
  !dp%d_private_data%long_var_names(14) = "mask_on_u_points"
  !dp%d_private_data%long_var_names(15) = "mask_on_v_points"

  dp%d_private_data%long_var_names(1) = "free_surface"
  dp%d_private_data%long_var_names(2) = "u_momentum_component"
  dp%d_private_data%long_var_names(3) = "v_momentum_component"
  dp%d_private_data%long_var_names(4) = "vertical_momentum_component"
  dp%d_private_data%long_var_names(5) = "salinity_vertical_diffusion_coefficient"
  dp%d_private_data%long_var_names(6) = "salinity"
  dp%d_private_data%long_var_names(7) = "potential_temperature"
  ! Grid initialization values, for now this is been read from file
  dp%d_private_data%long_var_names(8) = "s_coordinate_stretching_curves_at_rho_points"
  dp%d_private_data%long_var_names(9) = "s_coordinate_stretching_curves_at_w_points"
  dp%d_private_data%long_var_names(10) = "s_coordinate_independent_variable_at_vertical_rho_points"
  dp%d_private_data%long_var_names(11) = "s_coordinate_independent_variable_at_vertical_w_points"

  ! Call get values of ROMS component
  !long_var_names_array_size = SIZE(dp%d_private_data%long_var_names)
  ! do i = 8, long_var_names_array_size
  !   call flush()
  !   print *, "LTRANS_CMI> Getting Value for ", trim(dp%d_private_data%long_var_names(i))
  !   call CMI_get_values(ocean_port, TRIM(dp%d_private_data%long_var_names(i)), return_sidl_array, exception)
  !   call flush()
  !   print *, "LTRANS_CMI> Setting Value for ", trim(dp%d_private_data%long_var_names(i))
  !   call LTR_CMI_set_valuespoyw79p49f_mi(self, TRIM(dp%d_private_data%long_var_names(i)), return_sidl_array, exception)
  ! end do

  ! Initializing LTRANS
  print *, "LTRANS_CMI> Calling LTRANS initialize"
  call ltrans_initialize(config_file)
  dp%d_private_data%cmi_status = 'I'
  print *, "LTRANS_CMI> Initialization Done."

  ! Setting IRFPortQueue to the global vriable
  dp%d_private_data%irf_port_queue = port_queue