| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(krn_t), | intent(inout), | target | :: | me | ||
| real(kind=dp), | intent(out), | optional, | pointer | :: | rhs_or_solution_view(:) |
Returns pointer with rhs or solution array |
| integer, | intent(in), | optional | :: | FF_flux_p_loc(:) |
Position (state index) of the FF_flux ports local to the component |
|
| integer, | intent(in), | optional | :: | FS_p_loc(:) |
Position (state index) of the FS ports local to the component |
|
| integer, | intent(in), | optional | :: | FF_src_p_loc(:) |
Position (state index) of the FF_src ports local to the component |
|
| integer, | intent(in), | optional | :: | SS_flux_p_loc(:) |
Position (state index) of the SS_flux ports local to the component |
|
| integer, | intent(in), | optional | :: | SS_src_p_loc(:) |
Position (state index) of the SS_src ports local to the component |
|
| character(len=*), | intent(in), | optional | :: | CompName | ||
| type(FF_flux_port_t), | intent(out), | optional, | pointer | :: | FF_flux_p_view(:) |
Returns pointer with array of FF_flux ports for this component |
| type(FS_port_t), | intent(out), | optional, | pointer | :: | FS_p_view(:) |
Returns pointer with array of FS ports for this component |
| type(FF_src_port_t), | intent(out), | optional, | pointer | :: | FF_src_p_view(:) |
Returns pointer with array of FF_src ports for this component |
| type(SS_flux_port_t), | intent(out), | optional, | pointer | :: | SS_flux_p_view(:) |
Returns pointer with array of SS_flux ports for this component |
| type(SS_src_port_t), | intent(out), | optional, | pointer | :: | SS_src_p_view(:) |
Returns pointer with array of SS_src ports for this component |
subroutine krn_update(me, rhs_or_solution_view, FF_flux_p_loc, FS_p_loc, & FF_src_p_loc, SS_flux_p_loc, SS_src_p_loc, CompName, FF_flux_p_view, FS_p_view, & FF_src_p_view, SS_flux_p_view, SS_src_p_view) class(krn_t), target, intent(inout) :: me real(dp), pointer, intent(out), optional :: rhs_or_solution_view(:) !! Returns pointer with rhs or solution array integer, intent(in), optional :: FF_flux_p_loc(:) !! Position (state index) of the FF_flux ports local to the component integer, intent(in), optional :: FS_p_loc(:) !! Position (state index) of the FS ports local to the component integer, intent(in), optional :: FF_src_p_loc(:) !! Position (state index) of the FF_src ports local to the component integer, intent(in), optional :: SS_flux_p_loc(:) !! Position (state index) of the SS_flux ports local to the component integer, intent(in), optional :: SS_src_p_loc(:) !! Position (state index) of the SS_src ports local to the component character(*), intent(in), optional :: CompName type(FF_flux_port_t), pointer, intent(out), optional :: FF_flux_p_view(:) !! Returns pointer with array of FF_flux ports for this component type(FS_port_t), pointer, intent(out), optional :: FS_p_view(:) !! Returns pointer with array of FS ports for this component type(FF_src_port_t), pointer, intent(out), optional :: FF_src_p_view(:) !! Returns pointer with array of FF_src ports for this component type(SS_flux_port_t), pointer, intent(out), optional :: SS_flux_p_view(:) !! Returns pointer with array of SS_flux ports for this component type(SS_src_port_t), pointer, intent(out), optional :: SS_src_p_view(:) !! Returns pointer with array of SS_src ports for this component integer :: start_state_idx,ii logical :: all_equal class(port_t), pointer :: port_ptr(:) if(present(rhs_or_solution_view)) me%idx = me%idx + 1 start_state_idx = sum(me%nb_state_vars(1:me%idx)) - me%nb_state_vars(me%idx) if(present(rhs_or_solution_view)) then rhs_or_solution_view => me%rhs_or_solution(start_state_idx+1:start_state_idx+me%nb_state_vars(me%idx)) endif if(present(FF_flux_p_loc) .and. present(FF_flux_p_view)) then port_ptr => me%FF_flux_list%update(me%idx,FF_flux_p_loc,start_state_idx,me%FF_flux_ports) select type (port_ptr); class is (FF_flux_port_t) FF_flux_p_view => port_ptr end select endif if(present(FS_p_loc) .and. present(FS_p_view)) then port_ptr => me%FS_list%update(me%idx,FS_p_loc,start_state_idx,me%FS_ports) select type (port_ptr); class is (FS_port_t) FS_p_view => port_ptr end select if(present(CompName)) then all_equal = all(FS_p_loc == [(ii, ii = 1, size(FS_p_loc))]) if(all_equal) then ! case of strands or solid if uniform channel_link array me%PortIdxForFSLink_List = me%PortIdxForFSLink_List//' '//CompName//':0' else ! case of solids only me%PortIdxForFSLink_List = me%PortIdxForFSLink_List//' '//CompName//':' do ii=1,size(FS_p_loc)-1 me%PortIdxForFSLink_List = me%PortIdxForFSLink_List//to_str(FS_p_loc(ii))//',' enddo me%PortIdxForFSLink_List = me%PortIdxForFSLink_List//to_str(FS_p_loc(size(FS_p_loc))) endif endif endif if(present(FF_src_p_loc) .and. present(FF_src_p_view)) then port_ptr => me%FF_src_list%update(me%idx,FF_src_p_loc,start_state_idx,me%FF_src_ports) select type (port_ptr); class is (FF_src_port_t) FF_src_p_view => port_ptr end select endif if(present(SS_flux_p_loc) .and. present(SS_flux_p_view)) then port_ptr => me%SS_flux_list%update(me%idx,SS_flux_p_loc,start_state_idx,me%SS_flux_ports) select type (port_ptr); class is (SS_flux_port_t) SS_flux_p_view => port_ptr end select endif if(present(SS_src_p_loc) .and. present(SS_src_p_view)) then port_ptr => me%SS_src_list%update(me%idx,SS_src_p_loc,start_state_idx,me%SS_src_ports) select type (port_ptr); class is (SS_src_port_t) SS_src_p_view => port_ptr end select endif end subroutine krn_update