updateQuads fm = let
  -- TODO solve the need for ps
  ps          = V.map controlPoint . V.fromList . IM.elems . controlPoints $ fm
  func acc i  = acc { controlPoints = IM.adjust (func2 i) i (controlPoints acc)}
  func2 i old = old { controlPoint = controlPoint old &+ (0.3 *& (calcForceAtQuad $ getPatchsAtQuadrs ps fm i))}
  quadriP     = mapCP0D fm
  in IM.foldl' func fm quadriP
updateQuads fm = let
  -- TODO solve the need for ps
  ps          = V.map controlPoint . V.fromList . IM.elems . controlPoints $ fm
  func acc i  = acc { controlPoints = IM.adjust (func2 i) i (controlPoints acc)}
  func2 i old = old { controlPoint = controlPoint old &+ (0.3 *& (calcForceAtQuad $ getPatchsAtQuadrs ps fm i))}
  quadriP     = mapCP0D fm
  in IM.foldl' func fm quadriP
updateQuads fm = let
  -- TODO solve the need for ps
  ps          = V.map controlPoint . V.fromList . IM.elems . controlPoints $ fm
  func acc i  = acc { controlPoints = IM.adjust (func2 i) i (controlPoints acc)}
  func2 i old = old { controlPoint = controlPoint old &+ (0.3 *& (calcForceAtQuad $ getPatchsAtQuadrs ps fm i))}
  quadriP     = mapCP0D fm
  in IM.foldl' func fm quadriP