diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
index 186722c21e41ca8aa7cae9a51092c9dd56dd015e..42fe3b8a1b4c3a94a517bbf473ddda70d342d913 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
@@ -27,6 +27,9 @@ License
 #include "addToRunTimeSelectionTable.H"
 #include "fvPatchFieldMapper.H"
 #include "volFields.H"
+#include "physicoChemicalConstants.H"
+
+using Foam::constant::physicoChemical::sigma;
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -66,6 +69,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
     temperatureCoupledBase(patch(), "undefined", "undefined", "undefined-K"),
     mode_(fixedHeatFlux),
     Q_(0),
+    relaxation_(1),
+    emissivity_(0),
     qrRelaxation_(1),
     qrName_("undefined-qr"),
     thicknessLayers_(),
@@ -89,6 +94,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
     temperatureCoupledBase(patch(), dict),
     mode_(operationModeNames.read(dict.lookup("mode"))),
     Q_(0),
+    relaxation_(dict.lookupOrDefault<scalar>("relaxation", 1)),
+    emissivity_(dict.lookupOrDefault<scalar>("emissivity", 0)),
     qrRelaxation_(dict.lookupOrDefault<scalar>("qrRelaxation", 1)),
     qrName_(dict.lookupOrDefault<word>("qr", "none")),
     thicknessLayers_(),
@@ -167,6 +174,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
     temperatureCoupledBase(patch(), ptf),
     mode_(ptf.mode_),
     Q_(ptf.Q_),
+    relaxation_(ptf.relaxation_),
+    emissivity_(ptf.emissivity_),
     qrRelaxation_(ptf.qrRelaxation_),
     qrName_(ptf.qrName_),
     thicknessLayers_(ptf.thicknessLayers_),
@@ -213,6 +222,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
     q_(tppsf.q_),
     h_(tppsf.h_),
     Ta_(tppsf.Ta_),
+    relaxation_(tppsf.relaxation_),
+    emissivity_(tppsf.emissivity_),
     qrPrevious_(tppsf.qrPrevious_),
     qrRelaxation_(tppsf.qrRelaxation_),
     qrName_(tppsf.qrName_),
@@ -235,6 +246,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
     q_(tppsf.q_),
     h_(tppsf.h_),
     Ta_(tppsf.Ta_),
+    relaxation_(tppsf.relaxation_),
+    emissivity_(tppsf.emissivity_),
     qrPrevious_(tppsf.qrPrevious_),
     qrRelaxation_(tppsf.qrRelaxation_),
     qrName_(tppsf.qrName_),
@@ -326,8 +339,7 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
         return;
     }
 
-    const scalarField Tp(*this);
-    scalarField hp(patch().size(), 0);
+    const scalarField& Tp(*this);
 
     scalarField qr(Tp.size(), 0);
     if (qrName_ != "none")
@@ -372,18 +384,64 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
                     }
                 }
             }
-            hp = 1/(1/h_ + totalSolidRes);
+            scalarField hp(1/(1/h_ + totalSolidRes));
+
+            scalarField hpTa(hp*Ta_);
+
+            if (emissivity_ > 0)
+            {
+                // Evaluate the radiative flux to the environment
+                // from the surface temperature ...
+                if (totalSolidRes > 0)
+                {
+                    // ... including the effect of the solid wall thermal
+                    // resistance
+                    scalarField TpLambda(h_/(h_ + 1/totalSolidRes));
+                    scalarField Ts(TpLambda*Tp + (1 - TpLambda)*Ta_);
+                    scalarField lambdaTa4(pow4((1 - TpLambda)*Ta_));
+
+                    hp += emissivity_*sigma.value()*(pow4(Ts) - lambdaTa4)/Tp;
+                    hpTa += sigma.value()*(emissivity_*lambdaTa4 + pow4(Ta_));
+                }
+                else
+                {
+                    // ... if there is no solid wall thermal resistance use
+                    // the current wall temperature
+                    hp += emissivity_*sigma.value()*pow3(Tp);
+                    hpTa += sigma.value()*pow4(Ta_);
+                }
+            }
+
+            const scalarField kappaDeltaCoeffs
+            (
+                this->kappa(Tp)*patch().deltaCoeffs()
+            );
 
-            qr /= Tp;
             refGrad() = 0;
-            refValue() = hp*Ta_/(hp - qr);
-            valueFraction() =
-                (hp - qr)/((hp - qr) + kappa(Tp)*patch().deltaCoeffs());
+
+            forAll(Tp, i)
+            {
+                if (qr[i] < 0)
+                {
+                    const scalar hpmqr = hp[i] - qr[i]/Tp[i];
+
+                    refValue()[i] = hpTa[i]/hpmqr;
+                    valueFraction()[i] = hpmqr/(hpmqr + kappaDeltaCoeffs[i]);
+                }
+                else
+                {
+                    refValue()[i] = (hpTa[i] + qr[i])/hp[i];
+                    valueFraction()[i] = hp[i]/(hp[i] + kappaDeltaCoeffs[i]);
+                }
+            }
 
             break;
         }
     }
 
+    valueFraction() = relaxation_*valueFraction() + (1 - relaxation_);
+    refValue() = relaxation_*refValue() + (1 - relaxation_)*Tp;
+
     mixedFvPatchScalarField::updateCoeffs();
 
     if (debug)
@@ -434,6 +492,18 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::write
             h_.writeEntry("h", os);
             Ta_.writeEntry("Ta", os);
 
+            if (relaxation_ < 1)
+            {
+                os.writeKeyword("relaxation")
+                    << relaxation_ << token::END_STATEMENT << nl;
+            }
+
+            if (emissivity_ > 0)
+            {
+                os.writeKeyword("emissivity")
+                    << emissivity_ << token::END_STATEMENT << nl;
+            }
+
             if (thicknessLayers_.size())
             {
                 thicknessLayers_.writeEntry("thicknessLayers", os);
@@ -448,9 +518,10 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::write
 
     if (qrName_ != "none")
     {
-        qrPrevious_.writeEntry("qrPrevious", os);
         os.writeKeyword("qrRelaxation")
             << qrRelaxation_ << token::END_STATEMENT << nl;
+
+        qrPrevious_.writeEntry("qrPrevious", os);
     }
 
     refValue().writeEntry("refValue", os);
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H
index 2389f60ec374307b6045fec8ef8f1b5894927951..411dfe9ef0cb9f0862c2385a3a84025355f9df33 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H
@@ -59,6 +59,8 @@ Usage
     Ta           | Ambient temperature [K]     | for mode 'coefficient' |
     thicknessLayers | Layer thicknesses [m] | no |
     kappaLayers  | Layer thermal conductivities [W/m/K] | no |
+    relaxation   | Relaxation for the wall temperature | no | 1
+    emissivity   | Surface emissivity for radiative flux to ambient | no | 0
     qr           | Name of the radiative field | no | none
     qrRelaxation | Relaxation factor for radiative field | no | 1
     kappaMethod  | Inherited from temperatureCoupledBase | inherited |
@@ -147,7 +149,13 @@ private:
         //- Ambient temperature [K]
         scalarField Ta_;
 
-        //- Chache qr for relaxation
+        //- Relaxation for the wall temperature (thermal inertia)
+        scalar relaxation_;
+
+        //- Optional surface emissivity for radiative transfer to ambient
+        scalar emissivity_;
+
+        //- Cache qr for relaxation
         scalarField qrPrevious_;
 
         //- Relaxation for qr