fvFieldDecomposer::processorVolPatchFieldDecomposer:: processorVolPatchFieldDecomposer ( const fvMesh& mesh, const unallocLabelList& addressingSlice ) : sizeBeforeMapping_(mesh.nCells()), addressing_(addressingSlice.size()), weights_(addressingSlice.size()) { const scalarField& weights = mesh.weights().internalField(); const labelList& own = mesh.faceOwner(); const labelList& neighb = mesh.faceNeighbour(); forAll (addressing_, i) { // Subtract one to align addressing. HJ, 5/Dec/2001 label ai = mag(addressingSlice[i]) - 1; if (ai < neighb.size()) { // This is a regular face. it has been an internal face // of the original mesh and now it has become a face // on the parallel boundary addressing_[i].setSize(2); weights_[i].setSize(2); addressing_[i][0] = own[ai]; addressing_[i][1] = neighb[ai]; weights_[i][0] = weights[ai]; weights_[i][1] = 1.0 - weights[ai]; } else { // This is a face that used to be on a cyclic boundary // but has now become a parallel patch face. I cannot // do the interpolation properly (I would need to look // up the different (face) list of data), so I will // just grab the value from the owner cell // HJ, 16/Mar/2001 addressing_[i].setSize(1); weights_[i].setSize(1); addressing_[i][0] = own[ai]; weights_[i][0] = 1.0; } }
faFieldDecomposer::processorEdgePatchFieldDecomposer:: processorEdgePatchFieldDecomposer ( label sizeBeforeMapping, const unallocLabelList& addressingSlice ) : sizeBeforeMapping_(sizeBeforeMapping), addressing_(addressingSlice.size()), weights_(addressingSlice.size()) { forAll (addressing_, i) { addressing_[i].setSize(1); weights_[i].setSize(1); addressing_[i][0] = mag(addressingSlice[i]) - 1; weights_[i][0] = sign(addressingSlice[i]); }
Field<Type>::Field ( const tmp<Field<Type> >& tmapF, const unallocLabelList& mapAddressing ) : List<Type>(mapAddressing.size()) { map(tmapF, mapAddressing); }
fvFieldDecomposer::processorVolPatchFieldDecomposer:: processorVolPatchFieldDecomposer ( const fvMesh& mesh, const unallocLabelList& addressingSlice ) : directAddressing_(addressingSlice.size()) { const labelList& own = mesh.faceOwner(); const labelList& neighb = mesh.faceNeighbour(); forAll (directAddressing_, i) { // Subtract one to align addressing. label ai = mag(addressingSlice[i]) - 1; if (ai < neighb.size()) { // This is a regular face. it has been an internal face // of the original mesh and now it has become a face // on the parallel boundary. // Give face the value of the neighbour. if (addressingSlice[i] >= 0) { // I have the owner so use the neighbour value directAddressing_[i] = neighb[ai]; } else { directAddressing_[i] = own[ai]; } } else { // This is a face that used to be on a cyclic boundary // but has now become a parallel patch face. I cannot // do the interpolation properly (I would need to look // up the different (face) list of data), so I will // just grab the value from the owner cell directAddressing_[i] = own[ai]; } }