def prep_mlt_arrays(self):
        """  prepare multipler arrays.  Copies existing model input arrays and
        writes generic (ones) multiplier arrays

        """
        par_props = [self.pp_props,self.grid_props,
                         self.zone_props,self.const_props,
                     self.kl_props]
        par_suffixs = [self.pp_suffix,self.gr_suffix,
                       self.zn_suffix,self.cn_suffix,
                       self.kl_suffix]

        # Need to remove props and suffixes for which no info was provided (e.g. still None)
        del_idx = []
        for i,cp in enumerate(par_props):
            if cp is None:
                del_idx.append(i)
        for i in del_idx[::-1]:
            del(par_props[i])
            del(par_suffixs[i])

        mlt_dfs = []
        for par_prop,suffix in zip(par_props,par_suffixs):
            if len(par_prop) == 2:
                if not isinstance(par_prop[0],list):
                    par_prop = [par_prop]
            if len(par_prop) == 0:
                continue
            for pakattr,k_org in par_prop:
                attr_name = pakattr.split('.')[1]
                pak,attr = self.parse_pakattr(pakattr)
                ks = np.arange(self.m.nlay)
                if isinstance(attr,flopy.utils.Transient2d):
                    ks = np.arange(self.m.nper)
                try:
                    k_parse = self.parse_k(k_org,ks)
                except Exception as e:
                    self.logger.lraise("error parsing k {0}:{1}".
                                       format(k_org,str(e)))
                org,mlt,mod,layer = [],[],[],[]
                c = self.get_count(attr_name)
                mlt_prefix = "{0}{1}".format(attr_name,c)
                mlt_name = os.path.join(self.arr_mlt,"{0}.dat{1}"
                                        .format(mlt_prefix,suffix))
                for k in k_parse:
                    # horrible kludge to avoid passing int64 to flopy
                    # this gift may give again...
                    if type(k) is np.int64:
                        k = int(k)
                    if isinstance(attr,flopy.utils.Util2d):
                        fname = self.write_u2d(attr)

                        layer.append(k)
                    elif isinstance(attr,flopy.utils.Util3d):
                        fname = self.write_u2d(attr[k])
                        layer.append(k)
                    elif isinstance(attr,flopy.utils.Transient2d):
                        fname = self.write_u2d(attr.transient_2ds[k])
                        layer.append(0) #big assumption here
                    mod.append(os.path.join(self.m.external_path,fname))
                    mlt.append(mlt_name)
                    org.append(os.path.join(self.arr_org,fname))
                df = pd.DataFrame({"org_file":org,"mlt_file":mlt,"model_file":mod,"layer":layer})
                df.loc[:,"suffix"] = suffix
                df.loc[:,"prefix"] = mlt_prefix
                df.loc[:,"attr_name"] = attr_name
                mlt_dfs.append(df)
        if len(mlt_dfs) > 0:
            mlt_df = pd.concat(mlt_dfs,ignore_index=True)
            return mlt_df
def prep_mlt_arrays ( self ) : par_props = [ self . pp_props , self . grid_props , self . zone_props , self . const_props , self . kl_props ] par_suffixs = [ self . pp_suffix , self . gr_suffix , self . zn_suffix , self . cn_suffix , self . kl_suffix ] del_idx = [ ] for i , cp in enumerate ( par_props ) : if cp is None : del_idx . append ( i ) for i in del_idx [ : : - 1 ] : del ( par_props [ i ] ) del ( par_suffixs [ i ] ) mlt_dfs = [ ] for par_prop , suffix in zip ( par_props , par_suffixs ) : if len ( par_prop ) == 2 : if not isinstance ( par_prop [ 0 ] , list ) : par_prop = [ par_prop ] if len ( par_prop ) == 0 : continue for pakattr , k_org in par_prop : attr_name = pakattr . split ( '.' ) [ 1 ] pak , attr = self . parse_pakattr ( pakattr ) ks = np . arange ( self . m . nlay ) if isinstance ( attr , flopy . utils . Transient2d ) : ks = np . arange ( self . m . nper ) try : k_parse = self . parse_k ( k_org , ks ) except Exception as e : self . logger . lraise ( "error parsing k {0}:{1}" . format ( k_org , str ( e ) ) ) org , mlt , mod , layer = [ ] , [ ] , [ ] , [ ] c = self . get_count ( attr_name ) mlt_prefix = "{0}{1}" . format ( attr_name , c ) mlt_name = os . path . join ( self . arr_mlt , "{0}.dat{1}" . format ( mlt_prefix , suffix ) ) for k in k_parse : if type ( k ) is np . int64 : k = int ( k ) if isinstance ( attr , flopy . utils . Util2d ) : fname = self . write_u2d ( attr ) layer . append ( k ) elif isinstance ( attr , flopy . utils . Util3d ) : fname = self . write_u2d ( attr [ k ] ) layer . append ( k ) elif isinstance ( attr , flopy . utils . Transient2d ) : fname = self . write_u2d ( attr . transient_2ds [ k ] ) layer . append ( 0 ) mod . append ( os . path . join ( self . m . external_path , fname ) ) mlt . append ( mlt_name ) org . append ( os . path . join ( self . arr_org , fname ) ) df = pd . DataFrame ( { "org_file" : org , "mlt_file" : mlt , "model_file" : mod , "layer" : layer } ) df . loc [ : , "suffix" ] = suffix df . loc [ : , "prefix" ] = mlt_prefix df . loc [ : , "attr_name" ] = attr_name mlt_dfs . append ( df ) if len ( mlt_dfs ) > 0 : mlt_df = pd . concat ( mlt_dfs , ignore_index = True ) return mlt_df
prepare multipler arrays.  Copies existing model input arrays and
        writes generic (ones) multiplier arrays