def __init__(self, unstrained, substrate=None, strain_out_of_plane=None):
        '''
        Either ``substrate`` or ``strain_out_of_plane`` must be specified,
        but not both.
        
        Paramters
        ---------
        unstrained : IIIVZincBlendeAlloy
            Unstrained III-V zinc blende alloy

        substrate : Alloy with ``a`` parameter (default=None)
            Growth substrate, assumed to have a (001) surface

        strain_out_of_plane : float (default=None)
            Out-of-plane strain [dimensionless], which is negative for tensile
            strain and positive for compressive strain. This is the strain
            measured by X-ray diffraction (XRD) symmetric omega-2theta scans.
        '''
        if substrate is not None and strain_out_of_plane is None:
            self.substrate = substrate
            self._strain_out_of_plane = None
            name = '{}/{}(001)'.format(unstrained.name, substrate.name)
        elif strain_out_of_plane is not None:
            self.substrate = None
            self._strain_out_of_plane = float(strain_out_of_plane)
            name = '{} strained {:g}% along [001]'.format(unstrained.name,
                                            float(strain_out_of_plane)*100.)
        else:
            raise ValueError('Either `substrate` or `strain_out_of_plane` '
                             'must be specified, but not both.')
        self.unstrained = unstrained
        super(IIIVZincBlendeStrained001, self).__init__(name,
                                                        unstrained.elements,
                                                        parameters=None)
def __init__ ( self , unstrained , substrate = None , strain_out_of_plane = None ) : if substrate is not None and strain_out_of_plane is None : self . substrate = substrate self . _strain_out_of_plane = None name = '{}/{}(001)' . format ( unstrained . name , substrate . name ) elif strain_out_of_plane is not None : self . substrate = None self . _strain_out_of_plane = float ( strain_out_of_plane ) name = '{} strained {:g}% along [001]' . format ( unstrained . name , float ( strain_out_of_plane ) * 100. ) else : raise ValueError ( 'Either `substrate` or `strain_out_of_plane` ' 'must be specified, but not both.' ) self . unstrained = unstrained super ( IIIVZincBlendeStrained001 , self ) . __init__ ( name , unstrained . elements , parameters = None )
Either ``substrate`` or ``strain_out_of_plane`` must be specified,
        but not both.
        
        Paramters
        ---------
        unstrained : IIIVZincBlendeAlloy
            Unstrained III-V zinc blende alloy

        substrate : Alloy with ``a`` parameter (default=None)
            Growth substrate, assumed to have a (001) surface

        strain_out_of_plane : float (default=None)
            Out-of-plane strain [dimensionless], which is negative for tensile
            strain and positive for compressive strain. This is the strain
            measured by X-ray diffraction (XRD) symmetric omega-2theta scans.