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