void coupledFaPatchField<Type>::evaluate(const Pstream::commsTypes)
{
    Field<Type>::operator=
    (
        this->patch().weights()*this->patchInternalField()
      + (1.0 - this->patch().weights())*patchNeighbourField()
    );
}
void domainScalingFvPatchField<Type>::initInterfaceMatrixUpdate
(
    const scalarField& psiInternal,
    scalarField&,
    const lduMatrix&,
    const scalarField&,
    const direction,
    const bool bufferdTransfer
) const
{
    if(Pstream::parRun())
    {
    
      labelList globalIndex;

      //this should be global size
      scalarField globalField(domainScalingPatch_.shadow().size(),0.0);

    
      scalarField neighbourField = mag(patchNeighbourField());
          
      forAll(neighbourField , facei)
      {
          label globalface = globalIndex[facei];
          globalField[globalface] = neighbourField[facei];
      }

      for(
               int slave = 0;
               slave <= Pstream::lastSlave();
                slave++
         )
      {
         
          OPstream toProc(slave);

          toProc << globalField;
             
      }
   } 
tmp<Field<Type> > coupledFaPatchField<Type>::snGrad() const
{
    return
        (patchNeighbourField() - this->patchInternalField())
       *this->patch().deltaCoeffs();
}