예제 #1
0
def init_charge_parameters():
    """Fixture for a set of general input parameters regarding how to construct initial charge density."""
    general_parameters = AttributeDict()
    general_parameters.charge = AttributeDict()
    general_parameters.charge.constant_charge = True

    return general_parameters
예제 #2
0
def test_charge_parameters():
    """Test charge parameters."""
    parameters = AttributeDict()
    parameters.charge = AttributeDict()
    parameters.charge.from_wave = True
    massager = ParametersMassage(None, parameters)
    assert massager.exit_code is None
    parameters.charge.from_wave = False
    parameters.charge.from_charge = True
    massager = ParametersMassage(None, parameters)
    assert massager.exit_code is None
    assert massager.parameters.icharg == 1
    parameters.charge.from_charge = False
    parameters.charge.from_atomic = True
    massager = ParametersMassage(None, parameters)
    assert massager.exit_code is None
    assert massager.parameters.icharg == 2
    parameters.charge.from_atomic = False
    parameters.charge.from_potential = True
    massager = ParametersMassage(None, parameters)
    assert massager.exit_code is None
    assert massager.parameters.icharg == 4
    parameters.charge.from_potential = False
    parameters.charge.constant_charge = True
    massager = ParametersMassage(None, parameters)
    assert massager.exit_code is None
    assert massager.parameters.icharg == 11
    parameters.charge.constant_charge = False
    parameters.charge.constant_atomic = True
    massager = ParametersMassage(None, parameters)
    assert massager.exit_code is None
    assert massager.parameters.icharg == 12
예제 #3
0
def test_charge_parameters():
    """Test charge parameters."""
    parameters = AttributeDict()
    parameters.charge = AttributeDict()
    parameters.charge.from_wave = True
    massager = ParametersMassage(parameters)
    parameters.charge.from_wave = False
    parameters.charge.from_charge = True
    massager = ParametersMassage(parameters)
    assert massager.parameters[_DEFAULT_OVERRIDE_NAMESPACE].icharg == 1
    parameters.charge.from_charge = False
    parameters.charge.from_atomic = True
    massager = ParametersMassage(parameters)
    assert massager.parameters[_DEFAULT_OVERRIDE_NAMESPACE].icharg == 2
    parameters.charge.from_atomic = False
    parameters.charge.from_potential = True
    massager = ParametersMassage(parameters)
    assert massager.parameters[_DEFAULT_OVERRIDE_NAMESPACE].icharg == 4
    parameters.charge.from_potential = False
    parameters.charge.constant_charge = True
    massager = ParametersMassage(parameters)
    assert massager.parameters[_DEFAULT_OVERRIDE_NAMESPACE].icharg == 11
    parameters.charge.constant_charge = False
    parameters.charge.constant_atomic = True
    massager = ParametersMassage(parameters)
    assert massager.parameters[_DEFAULT_OVERRIDE_NAMESPACE].icharg == 12
예제 #4
0
def test_inherit_and_merge():
    """Test the inherit and merge functionality for the parameters and inputs."""
    from aiida.plugins import DataFactory
    from aiida_vasp.assistant.parameters import inherit_and_merge_parameters

    inputs = AttributeDict()
    inputs.bands = AttributeDict()
    inputs.bands.somekey = DataFactory('bool')(True)
    inputs.relax = AttributeDict()
    inputs.relax.somekey = DataFactory('bool')(True)
    inputs.smearing = AttributeDict()
    inputs.smearing.somekey = DataFactory('bool')(True)
    inputs.charge = AttributeDict()
    inputs.charge.somekey = DataFactory('bool')(True)
    inputs.converge = AttributeDict()
    inputs.converge.somekey = DataFactory('bool')(True)
    inputs.electronic = AttributeDict()
    inputs.electronic.somekey = DataFactory('bool')(True)
    inputs.dynamics = AttributeDict()
    inputs.dynamics.somekey = DataFactory('bool')(True)
    # Check that parameters does not have to be present
    parameters = inherit_and_merge_parameters(inputs)
    # Check that an empty parameters is allowed
    inputs.parameters = DataFactory('dict')(dict={})
    parameters = inherit_and_merge_parameters(inputs)
    test_parameters = AttributeDict({
        'electronic':
        AttributeDict({'somekey': True}),
        'bands':
        AttributeDict({'somekey': True}),
        'smearing':
        AttributeDict({'somekey': True}),
        'charge':
        AttributeDict({'somekey': True}),
        'relax':
        AttributeDict({'somekey': True}),
        'converge':
        AttributeDict({'somekey': True}),
        'dynamics':
        AttributeDict({'somekey': True})
    })
    assert parameters == test_parameters
    # Test ignored
    inputs.ignored = AttributeDict()
    inputs.ignored.ignored = DataFactory('bool')(True)
    parameters = inherit_and_merge_parameters(inputs)
    assert parameters == test_parameters
    # Test to override inputs.bands.somekey
    inputs.parameters = DataFactory('dict')(dict={'bands': {'somekey': False}})
    parameters = inherit_and_merge_parameters(inputs)
    test_parameters.bands.somekey = False
    assert parameters == test_parameters