Multigrid solver

 

The geometric MG method is implemented in PPM as a fast iterative method for solving the Poisson equation. The advantage of parallel MG solvers over their FFT-based counterparts is that the former restrict communication to the ghost layers whereas FFTs require several global mappings to transpose the field. This advantage is particularly significant on distributed memory machines, where the bandwidth of the network connection may become the performance limiting factor in FFT solvers.

 

The PPM MG supports both the V and W cycle (Trottenberg et. al., 2001). The Laplacian is discretized using five and seven point stencils in two and three dimensions, respectively. As residual smoother we employ the RB-SOR (Red-Black Successive Over-Relaxation) scheme. The optimal value for the over-relaxation parameter ω is approximately 1.15 (Yavneh, 1996). By setting ω = 1 one obtains the RB-GS (Red-Black Gauss-Seidel) smoother. Furthermore, the full-weighting scheme (Trottenberg et. al., 2001) is used for the restriction of the residual and bilinear (in two dimensions) or trilinear (in three dimensions) interpolation for the prolongation of the function corrections (Trottenberg et. al., 2001).

 

The PPM MG solves the two and three dimensional Poisson equation for scalar and vector fields. Boundary conditions can be periodic, Neumann, or Dirichlet. In the vector case each component can satisfy different boundary conditions. The solver is structured into initialization, actual computation, and finalization. In ppm_mg_init, we allocate all the fields that will be needed later and decide which components of the MG to use. In ppm_mg_solve the actual computation is taking place by re-using the previously allocated arrays and ppm_mg_finalize deallocates all internal buffers. This ensures that operations related to memory management are performed only once.

 

 

Profile Information

Application afterLoad: 0.000 seconds, 0.28 MB
Application afterInitialise: 0.013 seconds, 0.93 MB
Application afterRoute: 0.016 seconds, 1.23 MB
Application afterDispatch: 0.025 seconds, 1.84 MB
Application afterRender: 0.034 seconds, 2.00 MB

Memory Usage

2128824

12 queries logged

  1. SELECT *
      FROM jos_session
      WHERE session_id = '9untbk27s75873ojs2hja6bvm3'
  2. DELETE
      FROM jos_session
      WHERE ( time < '1638030079' )
  3. SELECT *
      FROM jos_session
      WHERE session_id = '9untbk27s75873ojs2hja6bvm3'
  4. INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` )
      VALUES ( '9untbk27s75873ojs2hja6bvm3','1638030979','','0','1','0' )
  5. SELECT *
      FROM jos_components
      WHERE parent = 0
  6. SELECT folder AS type, element AS name, params
      FROM jos_plugins
      WHERE published >= 1
      AND access <= 0
      ORDER BY ordering
  7. SELECT m.*, c.`option` AS component
      FROM jos_menu AS m
      LEFT JOIN jos_components AS c
      ON m.componentid = c.id
      WHERE m.published = 1
      ORDER BY m.sublevel, m.parent, m.ordering
  8. SELECT template
      FROM jos_templates_menu
      WHERE client_id = 0
      AND (menuid = 0 OR menuid = 65)
      ORDER BY menuid DESC
      LIMIT 0, 1
  9. SELECT a.*, u.name AS author, u.usertype, cc.title AS category, s.title AS section, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END AS slug, CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END AS catslug, g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access 
      FROM jos_content AS a
      LEFT JOIN jos_categories AS cc
      ON cc.id = a.catid
      LEFT JOIN jos_sections AS s
      ON s.id = cc.section
      AND s.scope = "content"
      LEFT JOIN jos_users AS u
      ON u.id = a.created_by
      LEFT JOIN jos_groups AS g
      ON a.access = g.id
      WHERE a.id = 59
      AND (  ( a.created_by = 0 )    OR  ( a.state = 1
      AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2021-11-27 16:36:19' )
      AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2021-11-27 16:36:19' )   )    OR  ( a.state = -1 )  )
  10. UPDATE jos_content
      SET hits = ( hits + 1 )
      WHERE id='59'
  11. SELECT id, title, module, position, content, showtitle, control, params
      FROM jos_modules AS m
      LEFT JOIN jos_modules_menu AS mm
      ON mm.moduleid = m.id
      WHERE m.published = 1
      AND m.access <= 0
      AND m.client_id = 0
      AND ( mm.menuid = 65 OR mm.menuid = 0 )
      ORDER BY position, ordering
  12. SELECT a.*, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END AS slug, CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END AS catslug
      FROM jos_content AS a
      INNER JOIN jos_categories AS cc
      ON cc.id = a.catid
      INNER JOIN jos_sections AS s
      ON s.id = a.sectionid
      WHERE a.state = 1 
      AND a.access <= 0
      AND cc.access <= 0
      AND s.access <= 0
      AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2021-11-27 16:36:19' ) 
      AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2021-11-27 16:36:19' )
      AND cc.id = 1
      AND cc.section = s.id
      AND cc.published = 1
      AND s.published = 1
      ORDER BY a.ordering
      LIMIT 0, 4

Language Files Loaded

Untranslated Strings Diagnostic

None

Untranslated Strings Designer

None