read_parameters_materials Subroutine

subroutine read_parameters_materials(self, json)

Load the material parameters from the JSON file

Arguments

Type IntentOptional Attributes Name
class(type_input) :: self
type(json_file), intent(inout) :: json

JSON parser


Calls

proc~~read_parameters_materials~~CallsGraph proc~read_parameters_materials read_parameters_materials destroy destroy proc~read_parameters_materials->destroy info info proc~read_parameters_materials->info print_error_message print_error_message proc~read_parameters_materials->print_error_message proc~error_message error_message proc~read_parameters_materials->proc~error_message proc~read_parameters_materials_basic read_parameters_materials_basic proc~read_parameters_materials->proc~read_parameters_materials_basic proc~read_parameters_materials_hydrauilic read_parameters_materials_hydrauilic proc~read_parameters_materials->proc~read_parameters_materials_hydrauilic proc~read_parameters_materials_thermal read_parameters_materials_thermal proc~read_parameters_materials->proc~read_parameters_materials_thermal log_error log_error proc~error_message->log_error proc~read_parameters_materials_basic->destroy proc~read_parameters_materials_basic->print_error_message proc~read_parameters_materials_basic->proc~error_message get get proc~read_parameters_materials_basic->get interface~value_in_range value_in_range proc~read_parameters_materials_basic->interface~value_in_range proc~join join proc~read_parameters_materials_basic->proc~join to_string to_string proc~read_parameters_materials_basic->to_string proc~read_parameters_materials_hydrauilic->destroy proc~read_parameters_materials_hydrauilic->print_error_message proc~read_parameters_materials_hydrauilic->proc~error_message proc~read_parameters_materials_hydrauilic->get proc~read_parameters_materials_hydrauilic->interface~value_in_range proc~read_parameters_materials_hydrauilic->proc~join proc~read_parameters_materials_wrf read_parameters_materials_wrf proc~read_parameters_materials_hydrauilic->proc~read_parameters_materials_wrf proc~read_parameters_materials_hydrauilic->to_string proc~read_parameters_materials_thermal->destroy proc~read_parameters_materials_thermal->print_error_message proc~read_parameters_materials_thermal->proc~error_message proc~read_parameters_materials_thermal->get interface~allocate_array allocate_array proc~read_parameters_materials_thermal->interface~allocate_array proc~read_parameters_materials_thermal->proc~join proc~read_parameters_materials_thermal->proc~read_parameters_materials_wrf proc~read_parameters_materials_thermal->to_string 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~value_in_range_int16 value_in_range_int16 interface~value_in_range->proc~value_in_range_int16 proc~value_in_range_int32 value_in_range_int32 interface~value_in_range->proc~value_in_range_int32 proc~value_in_range_int64 value_in_range_int64 interface~value_in_range->proc~value_in_range_int64 proc~value_in_range_int8 value_in_range_int8 interface~value_in_range->proc~value_in_range_int8 proc~value_in_range_real128 value_in_range_real128 interface~value_in_range->proc~value_in_range_real128 proc~value_in_range_real32 value_in_range_real32 interface~value_in_range->proc~value_in_range_real32 proc~value_in_range_real64 value_in_range_real64 interface~value_in_range->proc~value_in_range_real64 proc~read_parameters_materials_wrf->destroy proc~read_parameters_materials_wrf->print_error_message proc~read_parameters_materials_wrf->proc~error_message proc~read_parameters_materials_wrf->get proc~read_parameters_materials_wrf->interface~value_in_range proc~read_parameters_materials_wrf->proc~join 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

Called by

proc~~read_parameters_materials~~CalledByGraph proc~read_parameters_materials read_parameters_materials proc~inout_read_basic_parameters inout_read_basic_parameters proc~inout_read_basic_parameters->proc~read_parameters_materials interface~inout_read_basic_parameters type_input%inout_read_basic_parameters interface~inout_read_basic_parameters->proc~inout_read_basic_parameters proc~initialize_type_input type_input%initialize_type_input proc~initialize_type_input->interface~inout_read_basic_parameters

Source Code

    subroutine read_parameters_materials(self, json)
        !> Load the material parameters from the JSON file
        implicit none
        class(type_input) :: self
        type(json_file), intent(inout) :: json !! JSON parser

        logical :: found
        character(:), allocatable :: key
        integer(int32) :: i

        call json%info(materials, found=found, n_children=self%basic%num_materials)
        call json%print_error_message(output_unit)
        if (.not. found .or. self%basic%num_materials <= 0) then
            call json%destroy()
            call error_message(904, c_opt=materials)
        end if

        if (allocated(self%basic%materials)) deallocate (self%basic%materials)
        allocate (self%basic%materials(self%basic%num_materials))

        do i = 1, self%basic%num_materials
            call read_parameters_materials_basic(self, json, i)
            if (self%basic%analysis_controls%calculate_thermal) then
                call read_parameters_materials_thermal(self, json, i)
            end if
            if (self%basic%analysis_controls%calculate_hydraulic) then
                call read_parameters_materials_hydrauilic(self, json, i)
            end if
            if (self%basic%analysis_controls%calculate_mechanical) then
                ! Mechanical parameters can be added here in the future
            end if
        end do

    end subroutine read_parameters_materials