- Module dl_mg_common_data  
- In order to protect data the variable should be declare private and use get/set functions to access and set values  
- Subprogram dl_mg_multigrid_method::mg_vcycle  (mg, eq_type, niter_level1, test_conv_level1)
- needs to handle better the convergence flag in this version the coarse level does not check for convergence  
- Module dl_mg_neutralisation_with_ions  
- Add a debug print switch that enables printing Newton solver iteration details.  
- Subprogram dl_mg_newton_method::newton_solver  (mg, eq_type, alpha, rho, pot, ierr)
- what should happen here if converged has the value DL_MG_ERR_RES_RATIO? exit or keep going  
- Module dl_mg_nonlinear_model  
- Warn the user if the provided expcap is overruled by max_excap; should max_expcap be located in parameters module?  
- Subprogram dl_mg_second_order_solvers::dlmg_2nd_order_solver  (eq_type, alpha, rho, pot, use_pot_in, remove_source_zero_mode, res, der_pot, ierror)
- Needs more thinking when different errors occurs on different threads  
- Subprogram dl_mg_utils::compute_norm  (mg, component, scale)
- a_ptr can have contiguous attribute  
- Subprogram dl_mg_utils::dl_mg_init_nonlin  (eq_type, lambda, temp, n, c, q, rho, steric_weight, der_pot, expcap, linearised, use_fas, neutralisation_method, neutralisation_ion_ratios, ierror)
- Test for charge neutrality?  
- Subprogram dl_mg_utils::remove_zero_mode_source  (mg, eq_type, remove_mode, rho, steric_weight, der_pot)
- analyse furter eq_linear_pbe_pot in as primary input