def CheckStructuralModelsValid(rootGroup, xyzGridSize=None, verbose=False):
    """
    **CheckStricturalModelsValid** - Checks for valid structural model group data
    given a netCDF root node
    
    Parameters
    ----------
    rootGroup: netCDF4.Group
        The root group node of a Loop Project File
    xyzGridSize: [int,int,int] or None
        The 3D grid shape to test data in this node to adhere to
    verbose: bool
        A flag to indicate a higher level of console logging (more if True)
    
    Returns
    -------
    bool
        True if valid structural model data in project file, False otherwise.
    
    """
    valid = True
    if "StructuralModels" in rootGroup.groups:
        if verbose: print("  Structural Models Group Present")
        smGroup = rootGroup.groups.get("StructuralModels")
#        if verbose: print(smGroup)
        if "easting" in smGroup.ncattrs() and "northing" in smGroup.ncattrs() and "depth" in smGroup.ncattrs():
            if xyzGridSize != None:
                # Check gridSize from extents matches models sizes
                smGridSize = [smGroup.dimensions["easting"].size,smGroup.dimensions["northing"].size,smGroup.dimensions["depth"].size]
                if smGridSize != xyzGridSize:
                    print("(INVALID) Extents grid size and Structural Models Grid Size do NOT match")
                    print("(INVALID) Extents Grid Size :           ", xyzGridSize)
                    print("(INVALID) Structural Models Grid Size : ", smGridSize)
                    valid = False
                else:
                    if verbose: print("  Structural Models grid size adheres to extents")
        else:
            if verbose: print("No structural models extents in project file")
    else:
        if verbose: print("No Structural Models Group Present")
    return valid