def submodel_vp_colored(m,sm,rotated=None):
    """ m is the full model with the VP's already calculated
    sm is the submodel that we will save. it is modified and
    likely otherwise unusable - be careful """
    if( rotated == None ):
        vpcoloredmodel = Model('vp colored atoms',m.lx,m.ly,m.lz,sm.atoms)
    else:
        vpcoloredmodel = Model('vp colored atoms',m.lx,m.ly,m.lz,rotated.atoms)
    for i,atom in enumerate(vpcoloredmodel.atoms):
        atomi = m.atoms[m.atoms.index(sm.atoms[i])]
        if(atomi.vp.type == 'Full-icosahedra'):
            sm.atoms[i].vp = atomi.vp.copy()
            if( rotated != None ): rotated.atoms[i].vp = atomi.vp.copy()
            atom.z = 1 # Dark blue
        elif(atomi.vp.type == 'Icosahedra-like'):
            sm.atoms[i].vp = atomi.vp.copy()
            if( rotated != None ): rotated.atoms[i].vp = atomi.vp.copy()
            atom.z = 2 # Light blue
        elif(atomi.vp.type == 'Mixed'):
            sm.atoms[i].vp = atomi.vp.copy()
            if( rotated != None ): rotated.atoms[i].vp = atomi.vp.copy()
            atom.z = 3 # Orange
        elif(atomi.vp.type == 'Crystal-like'):
            sm.atoms[i].vp = atomi.vp.copy()
            if( rotated != None ): rotated.atoms[i].vp = atomi.vp.copy()
            atom.z = 4 # Red
        elif(atomi.vp.type == 'Undef'):
            sm.atoms[i].vp = atomi.vp.copy()
            if( rotated != None ): rotated.atoms[i].vp = atomi.vp.copy()
            atom.z = 5 # Grey
    vpcoloredmodel.write_real_xyz('vpcolored.xyz')