Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(type_output_observation), | intent(inout) | :: | self | |||
real(kind=real64), | intent(out) | :: | obs_values(:) | |||
type(type_domain), | intent(inout), | optional | :: | domain | ||
type(type_proereties_manager), | intent(inout), | optional | :: | properties | ||
real(kind=real64), | intent(in), | optional | :: | nodal_temperature(:) | ||
real(kind=real64), | intent(in), | optional | :: | nodal_porosity(:) | ||
real(kind=real64), | intent(in), | optional | :: | nodal_pw(:) |
subroutine get_observations_pw(self, obs_values, domain, properties, & nodal_temperature, nodal_porosity, nodal_pw) implicit none class(type_output_observation), intent(inout) :: self real(real64), intent(out) :: obs_values(:) type(type_domain), intent(inout), optional :: domain type(type_proereties_manager), intent(inout), optional :: properties real(real64), intent(in), optional :: nodal_temperature(:) real(real64), intent(in), optional :: nodal_porosity(:) real(real64), intent(in), optional :: nodal_pw(:) integer(int32) :: iObs real(real64), allocatable :: original_pressure(:) integer(int32) :: istat ! Initialize to zero obs_values(:) = 0.0d0 if (.not. present(nodal_pw)) return if (.not. domain%reordering%get_algorithm_name() == "none") then allocate (original_pressure, mold=nodal_pw) call domain%reordering%to_original_value(nodal_pw, original_pressure) else allocate (original_pressure, source=nodal_pw) end if do iObs = 1, self%num_observations obs_values(iObs) = original_pressure(self%node_ids(iObs)) end do deallocate (original_pressure) end subroutine get_observations_pw