void ParBlockNonlinearForm::SetParSpaces(Array<ParFiniteElementSpace *> &pf) { delete pBlockGrad; pBlockGrad = NULL; for (int s1=0; s1<fes.Size(); ++s1) { for (int s2=0; s2<fes.Size(); ++s2) { delete phBlockGrad(s1,s2); } } Array<FiniteElementSpace *> serialSpaces(pf.Size()); for (int s=0; s<pf.Size(); s++) { serialSpaces[s] = (FiniteElementSpace *) pf[s]; } SetSpaces(serialSpaces); phBlockGrad.SetSize(fes.Size(), fes.Size()); for (int s1=0; s1<fes.Size(); ++s1) { for (int s2=0; s2<fes.Size(); ++s2) { phBlockGrad(s1,s2) = new OperatorHandle(Operator::Hypre_ParCSR); } } }
void RemoveComments(String& l, bool& incomment) { int q = -1; int w = -1; if(incomment) q = w = 0; else { const char *s = l; while(*s) { if(*s == '\"') s = SkipString(s); else if(s[0] == '/' && s[1] == '/') { q = int(s - ~l); SetSpaces(l, q, l.GetCount() - q); return; } else if(s[0] == '/' && s[1] == '*') { q = int(s - ~l); break; } else s++; } if(q >= 0) w = q + 2; } while(q >= 0) { int eq = l.Find("*/", w); if(eq < 0) { incomment = true; SetSpaces(l, q, l.GetCount() - q); return; } SetSpaces(l, q, eq + 2 - q); incomment = false; q = l.Find("/*"); w = q + 2; } }