hydraulic_assemble_system_linear_1_parallel Subroutine

public subroutine hydraulic_assemble_system_linear_1_parallel(J, R, domain, pressure, temperature, porosity, ice, properties, controls, actual_order)

Arguments

Type IntentOptional Attributes Name
type(type_crs), intent(inout) :: J
real(kind=real64), intent(inout) :: R(:)
type(type_domain), intent(inout), target :: domain
type(type_variable), intent(in) :: pressure
type(type_variable), intent(in) :: temperature
type(type_variable), intent(in) :: porosity
type(type_variable), intent(in) :: ice
type(type_properties_manager), intent(in) :: properties
type(type_controls), intent(in) :: controls
integer(kind=int32), intent(in) :: actual_order

Calls

proc~~hydraulic_assemble_system_linear_1_parallel~~CallsGraph proc~hydraulic_assemble_system_linear_1_parallel hydraulic_assemble_system_linear_1_parallel proc~process_element_hydraulic_linear_1 process_element_hydraulic_linear_1 proc~hydraulic_assemble_system_linear_1_parallel->proc~process_element_hydraulic_linear_1 proc~set_all_crs type_crs%set_all_crs proc~hydraulic_assemble_system_linear_1_parallel->proc~set_all_crs dpsi dpsi proc~process_element_hydraulic_linear_1->dpsi interface~allocate_array allocate_array proc~process_element_hydraulic_linear_1->interface~allocate_array interface~deallocate_array deallocate_array proc~process_element_hydraulic_linear_1->interface~deallocate_array interface~gemv gemv proc~process_element_hydraulic_linear_1->interface~gemv jacobian jacobian proc~process_element_hydraulic_linear_1->jacobian jacobian_det jacobian_det proc~process_element_hydraulic_linear_1->jacobian_det none~calc_hydraulic type_properties_manager%calc_hydraulic proc~process_element_hydraulic_linear_1->none~calc_hydraulic proc~add_dense type_dense%add_dense proc~process_element_hydraulic_linear_1->proc~add_dense proc~destroy_dense type_dense%destroy_dense proc~process_element_hydraulic_linear_1->proc~destroy_dense proc~get_connectivity abst_mesh%get_connectivity proc~process_element_hydraulic_linear_1->proc~get_connectivity proc~get_dt type_time%get_dt proc~process_element_hydraulic_linear_1->proc~get_dt proc~get_gauss abst_mesh%get_gauss proc~process_element_hydraulic_linear_1->proc~get_gauss proc~get_group abst_mesh%get_group proc~process_element_hydraulic_linear_1->proc~get_group proc~get_num_gauss abst_mesh%get_num_gauss proc~process_element_hydraulic_linear_1->proc~get_num_gauss proc~get_num_nodes~3 abst_mesh%get_num_nodes proc~process_element_hydraulic_linear_1->proc~get_num_nodes~3 proc~get_weight abst_mesh%get_weight proc~process_element_hydraulic_linear_1->proc~get_weight proc~initialize_type_dense_from_node type_dense%initialize_type_dense_from_node proc~process_element_hydraulic_linear_1->proc~initialize_type_dense_from_node proc~lerp abst_mesh%lerp proc~process_element_hydraulic_linear_1->proc~lerp proc~should_calculate_target type_controls%should_calculate_target proc~process_element_hydraulic_linear_1->proc~should_calculate_target psi psi proc~process_element_hydraulic_linear_1->psi proc~allocate_rank1_int16 allocate_rank1_int16 interface~allocate_array->proc~allocate_rank1_int16 proc~allocate_rank1_int32 allocate_rank1_int32 interface~allocate_array->proc~allocate_rank1_int32 proc~allocate_rank1_int64 allocate_rank1_int64 interface~allocate_array->proc~allocate_rank1_int64 proc~allocate_rank1_int8 allocate_rank1_int8 interface~allocate_array->proc~allocate_rank1_int8 proc~allocate_rank1_logical1 allocate_rank1_logical1 interface~allocate_array->proc~allocate_rank1_logical1 proc~allocate_rank1_logical4 allocate_rank1_logical4 interface~allocate_array->proc~allocate_rank1_logical4 proc~allocate_rank1_logical8 allocate_rank1_logical8 interface~allocate_array->proc~allocate_rank1_logical8 proc~allocate_rank1_real128 allocate_rank1_real128 interface~allocate_array->proc~allocate_rank1_real128 proc~allocate_rank1_real32 allocate_rank1_real32 interface~allocate_array->proc~allocate_rank1_real32 proc~allocate_rank1_real64 allocate_rank1_real64 interface~allocate_array->proc~allocate_rank1_real64 proc~allocate_rank2_int16 allocate_rank2_int16 interface~allocate_array->proc~allocate_rank2_int16 proc~allocate_rank2_int32 allocate_rank2_int32 interface~allocate_array->proc~allocate_rank2_int32 proc~allocate_rank2_int64 allocate_rank2_int64 interface~allocate_array->proc~allocate_rank2_int64 proc~allocate_rank2_int8 allocate_rank2_int8 interface~allocate_array->proc~allocate_rank2_int8 proc~allocate_rank2_logical1 allocate_rank2_logical1 interface~allocate_array->proc~allocate_rank2_logical1 proc~allocate_rank2_logical4 allocate_rank2_logical4 interface~allocate_array->proc~allocate_rank2_logical4 proc~allocate_rank2_logical8 allocate_rank2_logical8 interface~allocate_array->proc~allocate_rank2_logical8 proc~allocate_rank2_real128 allocate_rank2_real128 interface~allocate_array->proc~allocate_rank2_real128 proc~allocate_rank2_real32 allocate_rank2_real32 interface~allocate_array->proc~allocate_rank2_real32 proc~allocate_rank2_real64 allocate_rank2_real64 interface~allocate_array->proc~allocate_rank2_real64 proc~deallocate_rank1_int32 deallocate_rank1_int32 interface~deallocate_array->proc~deallocate_rank1_int32 proc~deallocate_rank1_int64 deallocate_rank1_int64 interface~deallocate_array->proc~deallocate_rank1_int64 proc~deallocate_rank1_int8 deallocate_rank1_int8 interface~deallocate_array->proc~deallocate_rank1_int8 proc~deallocate_rank1_logical1 deallocate_rank1_logical1 interface~deallocate_array->proc~deallocate_rank1_logical1 proc~deallocate_rank1_logical4 deallocate_rank1_logical4 interface~deallocate_array->proc~deallocate_rank1_logical4 proc~deallocate_rank1_logical8 deallocate_rank1_logical8 interface~deallocate_array->proc~deallocate_rank1_logical8 proc~deallocate_rank1_real128 deallocate_rank1_real128 interface~deallocate_array->proc~deallocate_rank1_real128 proc~deallocate_rank1_real32 deallocate_rank1_real32 interface~deallocate_array->proc~deallocate_rank1_real32 proc~deallocate_rank1_real64 deallocate_rank1_real64 interface~deallocate_array->proc~deallocate_rank1_real64 proc~deallocate_rank2_int32 deallocate_rank2_int32 interface~deallocate_array->proc~deallocate_rank2_int32 proc~deallocate_rank2_int64 deallocate_rank2_int64 interface~deallocate_array->proc~deallocate_rank2_int64 proc~deallocate_rank2_int8 deallocate_rank2_int8 interface~deallocate_array->proc~deallocate_rank2_int8 proc~deallocate_rank2_logical1 deallocate_rank2_logical1 interface~deallocate_array->proc~deallocate_rank2_logical1 proc~deallocate_rank2_logical4 deallocate_rank2_logical4 interface~deallocate_array->proc~deallocate_rank2_logical4 proc~deallocate_rank2_logical8 deallocate_rank2_logical8 interface~deallocate_array->proc~deallocate_rank2_logical8 proc~deallocate_rank2_real128 deallocate_rank2_real128 interface~deallocate_array->proc~deallocate_rank2_real128 proc~deallocate_rank2_real32 deallocate_rank2_real32 interface~deallocate_array->proc~deallocate_rank2_real32 proc~deallocate_rank2_real64 deallocate_rank2_real64 interface~deallocate_array->proc~deallocate_rank2_real64 proc~type_coo_gemv type_coo_gemv interface~gemv->proc~type_coo_gemv proc~type_crs_gemv type_crs_gemv interface~gemv->proc~type_crs_gemv proc~type_dense_gemv type_dense_gemv interface~gemv->proc~type_dense_gemv proc~calc_hydraulic_properties_array type_properties_manager%calc_hydraulic_properties_array none~calc_hydraulic->proc~calc_hydraulic_properties_array proc~calc_hydraulic_properties_scalar type_properties_manager%calc_hydraulic_properties_scalar none~calc_hydraulic->proc~calc_hydraulic_properties_scalar proc~destroy_dense->interface~deallocate_array proc~initialize_type_dense_from_node->interface~allocate_array proc~lerp->psi proc~error_message error_message proc~allocate_rank1_int16->proc~error_message proc~allocate_rank1_int32->proc~error_message proc~allocate_rank1_int64->proc~error_message proc~allocate_rank1_int8->proc~error_message proc~allocate_rank1_logical1->proc~error_message proc~allocate_rank1_logical4->proc~error_message proc~allocate_rank1_logical8->proc~error_message proc~allocate_rank1_real128->proc~error_message proc~allocate_rank1_real32->proc~error_message proc~allocate_rank1_real64->proc~error_message proc~allocate_rank2_int16->proc~error_message proc~allocate_rank2_int32->proc~error_message proc~allocate_rank2_int64->proc~error_message proc~allocate_rank2_int8->proc~error_message proc~allocate_rank2_logical1->proc~error_message proc~allocate_rank2_logical4->proc~error_message proc~allocate_rank2_logical8->proc~error_message proc~allocate_rank2_real128->proc~error_message proc~allocate_rank2_real32->proc~error_message proc~allocate_rank2_real64->proc~error_message proc~calc_hydraulic_properties_impl_array type_properties_manager%calc_hydraulic_properties_impl_array proc~calc_hydraulic_properties_array->proc~calc_hydraulic_properties_impl_array proc~get_pointers_for_region type_properties_manager%get_pointers_for_region proc~calc_hydraulic_properties_array->proc~get_pointers_for_region proc~calc_hydraulic_properties_impl_scalar type_properties_manager%calc_hydraulic_properties_impl_scalar proc~calc_hydraulic_properties_scalar->proc~calc_hydraulic_properties_impl_scalar proc~calc_hydraulic_properties_scalar->proc~get_pointers_for_region proc~deallocate_rank1_int32->proc~error_message proc~deallocate_rank1_int64->proc~error_message proc~deallocate_rank1_int8->proc~error_message proc~deallocate_rank1_logical1->proc~error_message proc~deallocate_rank1_logical4->proc~error_message proc~deallocate_rank1_logical8->proc~error_message proc~deallocate_rank1_real128->proc~error_message proc~deallocate_rank1_real32->proc~error_message proc~deallocate_rank1_real64->proc~error_message proc~deallocate_rank2_int32->proc~error_message proc~deallocate_rank2_int64->proc~error_message proc~deallocate_rank2_int8->proc~error_message proc~deallocate_rank2_logical1->proc~error_message proc~deallocate_rank2_logical4->proc~error_message proc~deallocate_rank2_logical8->proc~error_message proc~deallocate_rank2_real128->proc~error_message proc~deallocate_rank2_real32->proc~error_message proc~deallocate_rank2_real64->proc~error_message proc~multiply_matrix_vector multiply_matrix_vector proc~type_dense_gemv->proc~multiply_matrix_vector calc_kflh calc_kflh proc~calc_hydraulic_properties_impl_array->calc_kflh proc~calc_hydraulic_properties_impl_scalar->calc_kflh log_error log_error proc~error_message->log_error proc~get_den_ptr type_material_manager%get_den_ptr proc~get_pointers_for_region->proc~get_den_ptr proc~get_gcc_ptr type_material_manager%get_gcc_ptr proc~get_pointers_for_region->proc~get_gcc_ptr proc~get_hcf_ptr type_material_manager%get_hcf_ptr proc~get_pointers_for_region->proc~get_hcf_ptr proc~get_thc_ptr type_material_manager%get_thc_ptr proc~get_pointers_for_region->proc~get_thc_ptr proc~get_vhc_ptr type_material_manager%get_vhc_ptr proc~get_pointers_for_region->proc~get_vhc_ptr proc~get_wrf_ptr type_material_manager%get_wrf_ptr proc~get_pointers_for_region->proc~get_wrf_ptr

Source Code

    subroutine hydraulic_assemble_system_linear_1_parallel(J, R, domain, pressure, temperature, porosity, ice, &
                                                           properties, controls, actual_order)
        implicit none
        type(type_crs), intent(inout) :: J
        real(real64), intent(inout) :: R(:)
        type(type_domain), intent(inout), target :: domain
        type(type_variable), intent(in) :: pressure
        type(type_variable), intent(in) :: temperature
        type(type_variable), intent(in) :: ice
        type(type_variable), intent(in) :: porosity
        type(type_properties_manager), intent(in) :: properties
        type(type_controls), intent(in) :: controls
        integer(int32), intent(in) :: actual_order

        integer(int32) :: c, ie_idx
        class(abst_mesh), pointer :: element

        call J%set_all(0.0d0)
        R(:) = 0.0d0

        !$omp parallel private(c, ie_idx, element)
        do c = 1, domain%colors%num_colors
            !$omp do
            do ie_idx = 1, domain%colors%colored(c)%num_elements
                element => domain%elements(domain%colors%colored(c)%elements(ie_idx))%e
                call process_element_hydraulic_linear_1(J, R, element, pressure, temperature, porosity, ice, &
                                                        properties, controls, actual_order)
            end do
            !$omp end do
        end do
        !$omp end parallel
    end subroutine hydraulic_assemble_system_linear_1_parallel