message: Fixing implementation that was overwritten by merge with master
diff: @@ -831,16 +831,51 @@ void GridFunction::GetVectorValues(ElementTransformation &T,
  T.Transform(ir, *tr);
  }
  - int vdim = fes->GetVDim();
  + const FiniteElement *FElem = fes->GetFE(T.ElementNo);
  + int dof = FElem->GetDof();
  +
  + Array<int> vdofs;
  + fes->GetElementVDofs(T.ElementNo, vdofs);
  +
  + Vector loc_data;
  + GetSubVector(vdofs, loc_data);
  int nip = ir.GetNPoints();
  +
  + if (FElem->GetRangeType() == FiniteElement::SCALAR)
  + {
  + MFEM_ASSERT(FElem->GetMapType() == FiniteElement::VALUE,
  + "invalid FE map type");
  + Vector shape(dof);
  + int vdim = fes->GetVDim();
  vals.SetSize(vdim, nip);
  - Vector val;
  + for (int j = 0; j < nip; j++)
  + {
  + const IntegrationPoint &ip = ir.IntPoint(j);
  + FElem->CalcShape(ip, shape);
  +
  + for (int k = 0; k < vdim; k++)
  + {
  + vals(k,j) = shape * ((const double *)loc_data + dof * k);
  + }
  + }
  + }
  + else
  + {
  + int spaceDim = fes->GetMesh()->SpaceDimension();
  + DenseMatrix vshape(dof, spaceDim);
  +
  + vals.SetSize(spaceDim, nip);
  + Vector val_j;
  +
  for (int j = 0; j < nip; j++)
  {
  const IntegrationPoint &ip = ir.IntPoint(j);
  T.SetIntPoint(&ip);
  - GetVectorValue(T, ip, val);
  - vals.SetCol(j, val);
  + FElem->CalcVShape(T, vshape);
  +
  + vals.GetColumnReference(j, val_j);
  + vshape.MultTranspose(loc_data, val_j);
  + }
  }
  }
  