abstract HSMGP
	xor CGS
		CGS_RED_AMG
		CGS_IP_CG
		CGS_IP_AMG
	xor Smoother
		Smoother_CGS
		Smoother_GSAC
		Smoother_GSACBE
		Smoother_GSRB
		Smoother_GSRBAC
		Smoother_JAC
	pre -> integer
	[pre >= 0]
	[pre <= 6]
	post -> integer
	[post >= 0]
	[post <= 6]
	[pre + post > 0]
	numCore -> integer
	[numCore = 64 || numCore = 256 || numCore = 1024 || numCore = 4096]
Cp : HSMGP