@@ -155,9 +155,19 @@ function _get_all_rcut(kwargs; _rcut = kwargs[:rcut])
155155end
156156
157157
158- function _rin0cuts_rcut (zlist, cutoffs:: Dict )
158+ function _rin0cuts_rcut (zlist, cutoffs:: Dict , kwargs = nothing )
159+ function _get_r0 (zi, zj)
160+ if kwargs == nothing
161+ return DefaultHypers. bond_len (zi, zj)
162+ elseif kwargs[:r0 ] == :bondlen
163+ return DefaultHypers. bond_len (zi, zj)
164+ elseif kwargs[:r0 ] isa Number
165+ return kwargs[:r0 ]
166+ end
167+ error (" Cannot determine r0($zi , $zj ) from the arguments provided." )
168+ end
159169 function rin0cut (zi, zj)
160- r0 = DefaultHypers . bond_len (zi, zj)
170+ r0 = _get_r0 (zi, zj)
161171 rin, rcut = cutoffs[zi, zj]
162172 return (rin = rin, r0 = r0, rcut = rcut)
163173 end
@@ -166,18 +176,23 @@ function _rin0cuts_rcut(zlist, cutoffs::Dict)
166176end
167177
168178
169- function _ace1_rin0cuts (kwargs; rcutkey = :rcut )
179+ function _ace1_rin0cuts (kwargs; rcutkey = :rcut , rinkey = :rin )
170180 elements = _get_elements (kwargs)
171181 rcut = _get_all_rcut (kwargs; _rcut = kwargs[rcutkey])
182+ if kwargs[:rin ] isa Number
183+ rin = kwargs[:rin ]
184+ else
185+ error (" Cannot read rin; please provide a number of file an issue if a more general mechanism is needed." )
186+ end
172187 if rcut isa Number
173- cutoffs = Dict ([ (s1, s2) => (0.0 , rcut) for s1 in elements, s2 in elements]. .. )
188+ cutoffs = Dict ([ (s1, s2) => (rin , rcut) for s1 in elements, s2 in elements]. .. )
174189 else
175- cutoffs = Dict ([ (s1, s2) => (0.0 , rcut[(s1, s2)]) for s1 in elements, s2 in elements]. .. )
190+ cutoffs = Dict ([ (s1, s2) => (rin , rcut[(s1, s2)]) for s1 in elements, s2 in elements]. .. )
176191 end
177192 # rcut = maximum(values(rcut)) # multitransform wants a single cutoff.
178193
179194 # construct the rin0cut structures
180- rin0cuts = _rin0cuts_rcut (elements, cutoffs)
195+ rin0cuts = _rin0cuts_rcut (elements, cutoffs, kwargs )
181196end
182197
183198
0 commit comments