@@ -160,7 +160,7 @@ def get_FDMNESinput(self, structure, Z_absorber):
160160
161161 transition_metal_ranges = [range (21 , 31 ), range (39 , 49 ), range (57 , 81 )]
162162
163- if cards [ "Green" ] == True :
163+ if cards . get ( "Green" , False ) :
164164 return cards
165165
166166 else :
@@ -215,8 +215,24 @@ def write(self, target_directory, **kwargs):
215215 ``{"pass": True, "errors": dict(), "path": ...}``.
216216 """
217217
218- structure = kwargs ["structure_uc" ]
219- sites = kwargs ["sites" ]
218+ structure = kwargs .get ("structure_uc" , kwargs ["structure" ])
219+
220+ Z_absorber = kwargs .get ("Z_absorber" )
221+
222+ sites = kwargs .get ("sites" )
223+ if sites is None :
224+ # Infer absorber sites from Z_absorber; if absent, default to the first site
225+ if Z_absorber is None :
226+ sites = [0 ]
227+ else :
228+ if isinstance (Z_absorber , (list , tuple , set )):
229+ zset = {int (z ) for z in Z_absorber }
230+ else :
231+ zset = {int (Z_absorber )}
232+
233+ sites = [i for i , s in enumerate (structure ) if int (s .specie .Z ) in zset ]
234+ if not sites :
235+ raise ValueError (f"No absorber sites found for Z_absorber={ Z_absorber } ." )
220236
221237 all_species = [structure [site ].specie .symbol for site in sites ]
222238 species = list (dict .fromkeys (all_species ))
@@ -231,11 +247,11 @@ def write(self, target_directory, **kwargs):
231247 for i in range (len (Z_absorbers )):
232248 specie = species [i ]
233249 Z_absorber = Z_absorbers [i ]
234- path = target_directory / Path ( specie )
235- path .mkdir (exist_ok = True , parents = True )
250+
251+ target_directory .mkdir (exist_ok = True , parents = True )
236252
237253 fdmnesinput = self .get_FDMNESinput (structure , Z_absorber )
238- filepath = path / f"{ specie } _in.txt"
254+ filepath = target_directory / f"{ specie } _in.txt"
239255
240256 with open (filepath , "w" ) as f :
241257 f .write ("Filout\n " )
0 commit comments