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
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
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
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