'Dref': D } tfact = 1 / 6. #%% PARAMETERS (DOMAIN, BC, SOLVER) domain_params = fn.set_domain_params(D, mvol, pqty, porosity, app_tort, slabels, input_file=root_dir + '\\phreeqc_input\\' + nn + '.phrq') bc_params = fn.set_bc_params(bc_slabels={'left': 100001}) solver_params = fn.set_solver_params(tfact=tfact) domain.nodetype[domain.nodetype == ct.Type.MULTILEVEL_CH] = ct.Type.MULTILEVEL fn.save_settings(settings, bc_params, solver_params, path, nn) #%% INITIATE THE SOLVER carb_rt = rt.CarbonationRT('MultilevelAdvectionDiffusion', domain, domain_params, bc_params, solver_params, settings) #%% PARAMETERS #plist = [(1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10)] plist = [(1, n) for n in np.arange(0, 10)] pavglist = [ 'avg_poros', 'pH', 'avg_D_eff', 'sum_vol', 'precipitation', 'dissolution', 'portlandite_cells', 'calcite_cells' ] #'delta_ch', 'delta_cc', 'precipitation','dissolution', 'portlandite_cells',
dp['voxel_vol'] = 1 dp['mvol'] = mvol dp['poros'] = porosity dp['app_tort'] = app_tort dp['solution_labels'] = slabels dp['database'] = 'cemdata07.dat' dp['phrqc_input_file'] = input_file #'CH_CC_Ceq.phrq' dp['eq_names'] = ['CSH'] dp['solid_phases'] = {'CSH': {'type': 'diffusive', 'mvol': mvol[0], 'c': pqty}} #bc_params = fn.set_bc_params(bc_slabels = {'left':100001}) solver_params = fn.set_solver_params( tfact=1 / 6., smart_thres=1e-8, cphi_fact=1 / 3.) # optional values, for time step (if tfact => tfactbased tau) solver_params['phrqc_flags']['smart_run'] = False domain.nodetype[domain.nodetype == ct.Type.MULTILEVEL_CH] = ct.Type.MULTILEVEL fn.save_settings(settings, bc_params, solver_params, path, nn) #%% INITIATE THE SOLVER rt = rtl.CSH_Leaching('MultilevelAdvectionDiffusion', domain, dp, bc_params, solver_params, settings) #%% RUN SOLVER it = time.time() itr = 0 j = 0 l = ll prev_csh = deepcopy(rt.solid.CSH.c > 0) rt.dissolution_time = [] rt_csh = []
} tfact_default = 1. / 6. * init_porosCH tfact_scale = 5. tfact = tfact_default * tfact_scale #%% PARAMETERS (DOMAIN, BC, SOLVER) domain_params = fn.set_domain_params(D, mvol, pqty, porosity, app_tort, slabels, input_file=root_dir + '\\phreeqc_input\\' + nn + '.phrq') bc_params = fn.set_bc_params(bc_slabels={'left': 100001}) solver_params = fn.set_solver_params(tfact=tfact, smart_thres=1e-8) domain.nodetype[domain.nodetype == ct.Type.MULTILEVEL_CH] = ct.Type.MULTILEVEL fn.save_settings(settings, bc_params, solver_params, path, nn) #%% INITIATE THE SOLVER carb_rt = rt.CarbonationRT('MultilevelAdvectionDiffusion', domain, domain_params, bc_params, solver_params, settings) #%% PARAMETERS #plist = [(1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10)] plist = [(1, n) for n in np.arange(0, 6)] pavglist = [ 'avg_poros', 'pH', 'avg_D_eff', 'sum_vol', 'precipitation', 'dissolution', 'portlandite_cells', 'calcite_cells' ] #'delta_ch', 'delta_cc', 'precipitation','dissolution', 'portlandite_cells',
'pore_size': 0.01*dx, # threshold radius or distance/2 'crystal_size': 0.5*dx, # crystal or pore length 'pore_density': 2000, #pore density per um3 - only for cylinder type }, 'subgrid': {'fraction':0.004}, # fraction of interface cell number or None = porosity 'app_tort':{'degree': 1./3.}, #TODO 'velocity': False, 'bc': phrqc_input['c_bc'], 'dx': dx, 'Dref':D } tfact_default = 1./6./1#*init_porosCH domain_params = fn.set_domain_params(D, mvol, pqty, porosity, app_tort, slabels, input_file = root_dir +'\\phreeqc_input\\' + nn + '.phrq') bc_params = fn.set_bc_params(bc_slabels = {'left':100001}) solver_params = fn.set_solver_params(tfact = tfact_default, smart_thres = 1e-8, cphi_fact = 1/3.) #fn.save_settings(settings, bc_params, solver_params, path, nn) #csh=yantra.PhrqcReactiveTransport('MultilevelDiffusion',domain,domain_params,bc_params,solver_params) csh=rt.CarbonationRT('MultilevelDiffusion',domain,domain_params,bc_params,solver_params, settings) #%% results dict plist = [(1,n) for n in np.arange(3, 6)] #points list pavglist = ['avg_poros', 'pH', 'avg_D_eff', 'sum_vol', 'precipitation', #argument list 'dissolution', 'portlandite_cells', 'calcite_cells'] results = fn.init_results(pavg=True, pavg_list=pavglist, points=plist, ptype=m) Ts = 100 #s Ts = Ts/scale + 0.001 N = Ts/csh.dt N_res = 1e+4
'pore_density': 2000, #pore density per um3 - only for cylinder type }, 'subgrid': {'fraction':None}, # fraction of interface cell number or None = porosity 'app_tort':{'degree': app_tort_degree}, #TODO 'velocity': False, 'bc': phrqc_input['c_bc'], 'dx': dx, 'Dref':D } #%% PARAMETERS (DOMAIN, BC, SOLVER) domain_params = fn.set_domain_params(D, mvol, pqty, porosity, app_tort, slabels, input_file = root_dir + \ '\\phreeqc_input\\' + nn + '.phrq')#'CH_CC-nat.phrq' bc_params = fn.set_bc_params(bc_slabels = {'left':100001}) solver_params = fn.set_solver_params(tfact = None, smart_thres = 1e-8)# optional values, for time step (if tfact => tfactbased tau) domain.nodetype[domain.nodetype == ct.Type.MULTILEVEL_CH] = ct.Type.MULTILEVEL fn.save_settings(settings, bc_params, solver_params, path, nn) #%% INITIATE THE SOLVER carb_rt= rt.CarbonationRT('MultilevelAdvectionDiffusion', domain, domain_params, bc_params, solver_params, settings) #%% PARAMETERS plist = [(1,n) for n in np.arange(1, 6)] #points list pavglist = ['avg_poros', 'pH', 'avg_D_eff', 'sum_vol', 'precipitation', #argument list 'dissolution', 'portlandite_cells', 'calcite_cells'] #'delta_ch', 'delta_cc', 'precipitation','dissolution', 'portlandite_cells', #'calcite_cells', 'active_cells','dt', 'pH', 'avg_poros', 'avg_D_eff', 'sum_vol' results = fn.init_results(pavg=True, pavg_list=pavglist, points=plist, ptype=m)