@@ -1068,52 +1068,66 @@ function mixture_calc_frozen_cv_multi(self, weights, temperatures) result(cv)
10681068
10691069 end function
10701070
1071- function mixture_calc_pressure_single (self , densities , temperature ) result(p)
1071+ function mixture_calc_pressure_single (self , densities , temperature , include_condensed ) result(p)
1072+ ! Condensed species normally have no ideal-gas pressure contribution. The optional
1073+ ! override supports fixed-mixture volume and density queries for reactants.
10721074
10731075 ! Arguments
10741076 class(Mixture), intent (in ) :: self
10751077 real (dp), intent (in ) :: densities(:)
10761078 real (dp), intent (in ) :: temperature
1079+ logical , intent (in ), optional :: include_condensed
10771080
10781081 ! Return
10791082 real (dp) :: p
10801083
10811084 ! Locals
10821085 integer :: j
10831086 real (dp) :: n, nj
1087+ logical :: include_condensed_
10841088
10851089 call check_array_len(size (densities), self% num_species, ' mixture_calc_pressure_single densities' )
10861090
1091+ include_condensed_ = .false.
1092+ if (present (include_condensed)) include_condensed_ = include_condensed
1093+
10871094 n = 0.0d0
10881095 do j = 1 , self% num_species
1089- if (self% is_condensed(j)) cycle
1096+ if (self% is_condensed(j) .and. .not. include_condensed_ ) cycle
10901097 nj = densities(j)/ self% species(j)% molecular_weight
10911098 n = n + nj
10921099 end do
10931100 p = n * gas_constant * temperature
10941101
10951102 end function
10961103
1097- function mixture_calc_pressure_multi (self , densities , temperatures ) result(p)
1104+ function mixture_calc_pressure_multi (self , densities , temperatures , include_condensed ) result(p)
1105+ ! Condensed species normally have no ideal-gas pressure contribution. The optional
1106+ ! override supports fixed-mixture volume and density queries for reactants.
10981107
10991108 ! Arguments
11001109 class(Mixture), intent (in ) :: self
11011110 real (dp), intent (in ) :: densities(:)
11021111 real (dp), intent (in ) :: temperatures(:)
1112+ logical , intent (in ), optional :: include_condensed
11031113
11041114 ! Return
11051115 real (dp) :: p
11061116
11071117 ! Locals
11081118 integer :: j
11091119 real (dp) :: nT, nj
1120+ logical :: include_condensed_
11101121
11111122 call check_array_len(size (densities), self% num_species, ' mixture_calc_pressure_multi densities' )
11121123 call check_array_len(size (temperatures), self% num_species, ' mixture_calc_pressure_multi temperatures' )
11131124
1125+ include_condensed_ = .false.
1126+ if (present (include_condensed)) include_condensed_ = include_condensed
1127+
11141128 nT = 0.0d0
11151129 do j = 1 , self% num_species
1116- if (self% is_condensed(j)) cycle
1130+ if (self% is_condensed(j) .and. .not. include_condensed_ ) cycle
11171131 nj = densities(j)/ self% species(j)% molecular_weight
11181132 nT = nT + nj * temperatures(j)
11191133 end do
0 commit comments