struct v2 { double el[2]; }; struct v4 { struct v2 el[2]; }; struct m22 { double el[2][2]; }; struct m24 { struct m22 el[2]; }; struct m42 { struct m22 el[2]; }; struct m44 { struct m22 A; struct m22 B; struct m22 C; struct m22 D; }; struct triblock22 { struct v2 c[xm-1]; struct m22 a[xm]; struct v2 b[xm-1]; }; struct triblock24 { struct m22 c[xm-1]; struct m24 a[xm]; struct m22 b[xm-1]; }; struct triblock44 { struct m42 c[xm-1]; struct m44 a[xm]; struct m42 b[xm-1]; }; struct kvec2 { struct v2 el[xm]; }; struct kvec4 { struct v4 el[xm]; }; struct gvec2 { struct v2 el[xm-1]; }; struct gvec4 { struct m42 el[xm-1]; }; struct collmat { struct triblock22 CF; struct triblock24 C[ym-2]; struct triblock24 CL; struct triblock22 AF; struct triblock44 A[ym-1]; struct triblock22 AL; struct triblock24 BF; struct triblock24 B[ym-2]; struct triblock22 BL; }; struct collvec { struct kvec2 F; struct kvec4 M[ym-1]; struct kvec2 L; }; struct corner_element_bcs { double el[4][2][2][2]; }; struct EW_element_bcs { double el[ym-2][4][2][2]; }; struct NS_element_bcs { double el[xm-2][4][2][2]; };