Exemple #1
0
def write_london(template, scf, molecule):
    printable = ''
    wave_function = scf.contains(template.wave_function.name)
    if wave_function:
        scf_submodule = wave_function.submodules.get(template.scf.name)
        if scf_submodule:
            atomst = scf_submodule.properties.pop(template.atomst.name)

    for module in scf.modules:
        if module.name != template.visual.name:
            printable += module.__str__()

    nmr = SubModule('*NMR')
    nmr.add_property(template, '.LONDON')
    nmr.add_property(template, '.DOEPRN')
    nmr.add_property(template, '.INTFLG',
                     ['1 1 0'])  #calculating just large-large large-small

    newModule = Module('**PROPERTIES')
    newModule.add_property(template, '.' + molecule.magnetic_field)
    newModule.submodules.update({'*NMR': nmr})

    printable += newModule.__str__()
    printable += '*END OF\n'

    if atomst:
        scf_submodule.properties.update({atomst.name: atomst})

    return printable
Exemple #2
0
def write_london(template, scf, molecule):
    printable = ''
    wave_function = scf.contains(template.wave_function.name)
    if wave_function:
        scf_submodule = wave_function.submodules.get(template.scf.name)
        if scf_submodule:
            atomst = scf_submodule.properties.pop(template.atomst.name)

    for module in scf.modules:
        if module.name != template.visual.name:
            printable += module.__str__()

    nmr = SubModule('*NMR')
    nmr.add_property(template, '.LONDON')
    nmr.add_property(template, '.DOEPRN')
    nmr.add_property(template, '.INTFLG', ['1 1 0'])#calculating just large-large large-small

    newModule = Module('**PROPERTIES')
    newModule.add_property(template, '.' + molecule.magnetic_field)
    newModule.submodules.update({'*NMR':nmr})

    printable += newModule.__str__()
    printable += '*END OF\n'

    if atomst:
        scf_submodule.properties.update({atomst.name:atomst})

    return printable
Exemple #3
0
    def derive_visual(self, template):
        visual = Module(template.visual.name)

        #jdia property
        if self.hamiltonian.properties.get(template.lvcorr.name):
            visual.add_property(template, template.jdia.name, ['PAMXVC 2'])
        elif self.hamiltonian.properties.get(template.levy_leblond.name):
            visual.add_property(template, template.jdia.name, ['DFCOEF'] )
            visual.add_property(template, template.noreortho.name )
            visual.add_property(template, template.nodirect.name )
        else:
            raise MissingInformation('Missing hamiltonian module from scf.inp file')

        visual.add_property(template, template.j.name, ['PAMXVC 1'])

        visual.add_property(template, template.london.name, [self.molecule.p_axis])

        # two_d
        biggest_ = str(math.ceil(self.molecule.biggest_coordinate * 2))
        fst_point = ['-' + biggest_, '-' + biggest_]
        snd_point = [biggest_, '-' + biggest_]
        trd_point = ['-' + biggest_, biggest_]
        index = 0 if self.molecule.p_axis == 'X' else 1 if self.molecule.p_axis == 'Y' else 2
        fst_point.insert(index, '1.0')
        snd_point.insert(index, '1.0')
        trd_point.insert(index, '1.0')

        values_for_two_d = []
        values_for_two_d.append(' '.join(fst_point))
        values_for_two_d.append(' '.join(snd_point))
        values_for_two_d.append('200')
        values_for_two_d.append(' '.join(trd_point))
        values_for_two_d.append('200')

        visual.add_property(template, template.two_d.name, values_for_two_d)

        self.scf.addModule(visual)
Exemple #4
0
    def derive_visual(self, template):
        visual = Module(template.visual.name)

        #jdia property
        if self.hamiltonian.properties.get(template.lvcorr.name):
            visual.add_property(template, template.jdia.name, ['PAMXVC 2'])
        elif self.hamiltonian.properties.get(template.levy_leblond.name):
            visual.add_property(template, template.jdia.name, ['DFCOEF'])
            visual.add_property(template, template.noreortho.name)
            visual.add_property(template, template.nodirect.name)
        else:
            raise MissingInformation(
                'Missing hamiltonian module from scf.inp file')

        visual.add_property(template, template.j.name, ['PAMXVC 1'])

        visual.add_property(template, template.london.name,
                            [self.molecule.p_axis])

        # two_d
        biggest_ = str(math.ceil(self.molecule.biggest_coordinate * 2))
        fst_point = ['-' + biggest_, '-' + biggest_]
        snd_point = [biggest_, '-' + biggest_]
        trd_point = ['-' + biggest_, biggest_]
        index = 0 if self.molecule.p_axis == 'X' else 1 if self.molecule.p_axis == 'Y' else 2
        fst_point.insert(index, '1.0')
        snd_point.insert(index, '1.0')
        trd_point.insert(index, '1.0')

        values_for_two_d = []
        values_for_two_d.append(' '.join(fst_point))
        values_for_two_d.append(' '.join(snd_point))
        values_for_two_d.append('200')
        values_for_two_d.append(' '.join(trd_point))
        values_for_two_d.append('200')

        visual.add_property(template, template.two_d.name, values_for_two_d)

        self.scf.addModule(visual)