def _generate_eos_node(include_magnetization=True):
        from aiida.common import LinkType
        from aiida.orm import Float, WorkflowNode

        node = WorkflowNode(
            process_type='aiida.workflows:common_workflows.eos').store()

        for index in range(5):
            structure = generate_structure().store()
            energy = Float(index).store()

            structure.add_incoming(node,
                                   link_type=LinkType.RETURN,
                                   link_label=f'structures__{index}')
            energy.add_incoming(node,
                                link_type=LinkType.RETURN,
                                link_label=f'total_energies__{index}')

            if include_magnetization:
                magnetization = Float(index).store()
                magnetization.add_incoming(
                    node,
                    link_type=LinkType.RETURN,
                    link_label=f'total_magnetizations__{index}')

        return node
    def _generate_dissociation_curve_node(include_magnetization=True):
        from aiida.common import LinkType
        from aiida.orm import Float, WorkflowNode

        node = WorkflowNode(process_type='aiida.workflows:common_workflows.dissociation_curve').store()

        for index in range(5):
            distance = Float(index / 10).store()
            energy = Float(index).store()

            distance.add_incoming(node, link_type=LinkType.RETURN, link_label=f'distances__{index}')
            energy.add_incoming(node, link_type=LinkType.RETURN, link_label=f'total_energies__{index}')

            if include_magnetization:
                magnetization = Float(index).store()
                magnetization.add_incoming(node, link_type=LinkType.RETURN, link_label=f'total_magnetizations__{index}')

        return node
Beispiel #3
0
    def _generate_dissociation_curve_node(include_magnetization=True, include_energy=True):
        from aiida.common import LinkType
        from aiida.orm import Float, WorkflowNode

        node = WorkflowNode(process_type='aiida.workflows:common_workflows.dissociation_curve').store()

        for index in range(5):
            distance = Float(index / 10).store()
            distance.add_incoming(node, link_type=LinkType.RETURN, link_label=f'distances__{index}')

            # `include_energy` can be set to False to test cases with missing outputs
            if include_energy:
                energy = Float(index).store()
                energy.add_incoming(node, link_type=LinkType.RETURN, link_label=f'total_energies__{index}')

            if include_magnetization:
                magnetization = Float(index).store()
                magnetization.add_incoming(node, link_type=LinkType.RETURN, link_label=f'total_magnetizations__{index}')

        node.set_exit_status(0)

        return node