diff --git a/test/tests/concrete_moisture_heat_transfer/gold/maqbeth_1d_out.e b/test/tests/concrete_moisture_heat_transfer/gold/maqbeth_1d_out.e new file mode 100644 index 000000000..8f6d598eb Binary files /dev/null and b/test/tests/concrete_moisture_heat_transfer/gold/maqbeth_1d_out.e differ diff --git a/test/tests/concrete_moisture_heat_transfer/gold/maqbeth_out.e b/test/tests/concrete_moisture_heat_transfer/gold/maqbeth_out.e deleted file mode 100644 index 9ad5ca805..000000000 Binary files a/test/tests/concrete_moisture_heat_transfer/gold/maqbeth_out.e and /dev/null differ diff --git a/test/tests/concrete_moisture_heat_transfer/maqbethRZ.e b/test/tests/concrete_moisture_heat_transfer/maqbethRZ.e deleted file mode 100644 index 6757d3251..000000000 Binary files a/test/tests/concrete_moisture_heat_transfer/maqbethRZ.e and /dev/null differ diff --git a/test/tests/concrete_moisture_heat_transfer/maqbeth_1d.e b/test/tests/concrete_moisture_heat_transfer/maqbeth_1d.e new file mode 100644 index 000000000..6ffa76ec6 Binary files /dev/null and b/test/tests/concrete_moisture_heat_transfer/maqbeth_1d.e differ diff --git a/test/tests/concrete_moisture_heat_transfer/maqbeth.i b/test/tests/concrete_moisture_heat_transfer/maqbeth_1d.i similarity index 73% rename from test/tests/concrete_moisture_heat_transfer/maqbeth.i rename to test/tests/concrete_moisture_heat_transfer/maqbeth_1d.i index aa4a18548..5173c3efa 100644 --- a/test/tests/concrete_moisture_heat_transfer/maqbeth.i +++ b/test/tests/concrete_moisture_heat_transfer/maqbeth_1d.i @@ -1,107 +1,109 @@ [Problem] - coord_type = RZ + type = ReferenceResidualProblem + reference_vector = 'ref' + extra_tag_vectors = 'ref' + coord_type = RZ [] [Mesh] - file = maqbethRZ.e - #uniform_refine = 1 + file = maqbeth_1d.e + construct_side_list_from_node_list = true [] [Functions] - [./ramp1] + [temp_hist] type = PiecewiseLinear x = '0.0 36000.0 114120.0 138600.0 213120' y = '20.0 20.0 150.0 80.0 200.0' - #scale_factor = 0.2 - [../] + [] [] [Variables] - [./T] + [T] order = FIRST family = LAGRANGE initial_condition = 20.0 - [../] - [./rh] + [] + [rh] order = FIRST family = LAGRANGE initial_condition = 0.96 - [../] + [] [] [AuxVariables] - [./thermal_conductivity] + [thermal_conductivity] order = CONSTANT family = Monomial - [../] + [] - [./thermal_capacity] + [thermal_capacity] order = CONSTANT family = Monomial - [../] + [] - [./moisture_capacity] + [moisture_capacity] order = CONSTANT family = Monomial - [../] + [] - [./humidity_diffusivity] + [humidity_diffusivity] order = CONSTANT family = Monomial - [../] + [] - [./water_content] + [water_content] order = CONSTANT family = Monomial - [../] - [./water_hydrated] + [] + [water_hydrated] order = CONSTANT family = Monomial - [../] + [] [] [Kernels] - [./T_td] + [T_td] type = ConcreteThermalTimeIntegration variable = T - [../] - [./T_diff] + extra_vector_tags = 'ref' + [] + [T_diff] type = ConcreteThermalConduction variable = T - [../] + extra_vector_tags = 'ref' + [] - [./T_conv] + [T_conv] type = ConcreteThermalConvection variable = T relative_humidity = rh - [../] + extra_vector_tags = 'ref' + [] - [./T_adsorption] + [T_adsorption] type = ConcreteLatentHeat variable = T H = rh - [../] + extra_vector_tags = 'ref' + [] - [./rh_td] + [rh_td] type = ConcreteMoistureTimeIntegration variable = rh - [../] + extra_vector_tags = 'ref' + [] - [./rh_diff] + [h_diff] type = ConcreteMoistureDiffusion variable = rh temperature = T - [../] - - #[./rh_dehydration] - # type = ConcreteMoistureDehydration - # variable = rh - # temperature = T - #[../] + extra_vector_tags = 'ref' + [] [] [AuxKernels] - [./k] + [k] type = MaterialRealAux variable = thermal_conductivity property = thermal_conductivity @@ -120,13 +122,13 @@ property = moisture_capacity execute_on = 'timestep_end' [../] - [./rh_duff] + [./rh_diff] type = MaterialRealAux variable = humidity_diffusivity property = humidity_diffusivity execute_on = 'timestep_end' [../] - [./wc_duff] + [./wc_diff] type = MaterialRealAux variable = water_content property = moisture_content @@ -144,7 +146,6 @@ [./concrete] type = ConcreteThermalMoisture block = 1 - # setup thermal property models and parameters # options available: CONSTANT ASCE-1992 KODUR-2004 EUROCODE-2004 KIM-2003 thermal_conductivity_model = KODUR-2004 thermal_capacity_model = KODUR-2004 @@ -164,7 +165,7 @@ concrete_cure_time = 23.0 #curing time in (days) # options available for humidity diffusivity: - moisture_diffusivity_model = Bazant #options: Bazant Xi Mensi + moisture_diffusivity_model = Bazant #options: Bazant Xi Mensi D1 = 3.0e-10 aggregate_vol_fraction = 0.7 #used in Xi's moisture diffusivity model @@ -181,7 +182,7 @@ type = FunctionDirichletBC variable = T boundary = '1' - function = ramp1 + function = temp_hist [../] [./T_right] @@ -196,7 +197,7 @@ type = SpecifiedVaporPressureBC variable = rh boundary = '1' - duration = 36000 + duration = 3600 vapor_pressure = 2500.0 temperature = T [../] @@ -204,39 +205,62 @@ type = SpecifiedVaporPressureBC variable = rh boundary = '2' - duration = 36000 + duration = 3600 vapor_pressure = 2500.0 temperature = T [../] [] +[VectorPostprocessors] + [profiles] + type = LineValueSampler + start_point = '0.5 0 0' + end_point = '1.1 0 0' + num_points = 100 + variable = 'T rh' + sort_by = id + outputs = csv + [] +[] + +[Preconditioning] + [smp] + type = SMP + full = true + [] +[] + [Executioner] type = Transient solve_type = 'PJFNK' - petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart -snes_ls -pc_hypre_boomeramg_strong_threshold' - petsc_options_value = 'hypre boomeramg 201 cubic 0.7' + petsc_options_iname = '-pc_type -pc_factor_mat_solver_package' + petsc_options_value = 'lu superlu_dist' + + automatic_scaling = true - dt = 100 - num_steps = 5 + dt = 10000 - #dtmax = 600.0 - #end_time = 900000.0 - # - #[./TimeStepper] - # type = SolutionTimeAdaptiveDT - # dt = 100.0 - #[../] + end_time = 900000.0 l_max_its = 50 l_tol = 1e-6 nl_max_its = 10 nl_rel_tol = 1e-6 nl_abs_tol = 1e-10 + + [Predictor] + type = SimplePredictor + scale = 1.0 + skip_times_old = '0.0 36000.0 114120.0 138600.0 213120' + [] [] [Outputs] - file_base = maqbeth_out exodus = true - sync_times = '69599.88 110400.12 121200.12 151200.00 211200.12 221400.00 240599.88 281400.12 454200.12 550800.00 701399.88' + [csv] + type = CSV + file_base = 'csv/out' + time_data = true + [] [] diff --git a/test/tests/concrete_moisture_heat_transfer/maqbeth_1d.jou b/test/tests/concrete_moisture_heat_transfer/maqbeth_1d.jou new file mode 100644 index 000000000..293100db7 --- /dev/null +++ b/test/tests/concrete_moisture_heat_transfer/maqbeth_1d.jou @@ -0,0 +1,19 @@ +## /Applications/Cubit-15.2/Cubit.app/Contents/MacOS/cubitclx +## Cubit Version 15.2 +## Cubit Build 405468 +## Revised 2016-09-23 10:47:14 -0600 (Fri, 23 Sep 2016) +## Running 05/03/2021 03:26:23 PM +## Command Options: +create vertex 0.5 0 0 +create vertex 1.1 0 0 +create curve vertex 1 2 +curve 1 scheme dualbias fine size 0.015 coarse size 0.03 +mesh curve 1 + +block 1 curve 1 +block 1 element type BAR2 + +nodeset 1 vertex 1 +nodeset 2 vertex 2 + +export mesh 'maqbeth_1d.e' overwrite diff --git a/test/tests/concrete_moisture_heat_transfer/temp_rh_plots.py b/test/tests/concrete_moisture_heat_transfer/temp_rh_plots.py new file mode 100755 index 000000000..7d79ed06e --- /dev/null +++ b/test/tests/concrete_moisture_heat_transfer/temp_rh_plots.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +import pandas +import mooseutils +import matplotlib.pyplot as plt + +f1 = plt.figure(1, figsize=(6,4.5)) +ax = plt.gca() +data = mooseutils.VectorPostprocessorReader('csv/out_profiles_*.csv') + +t_times = [19.5, 30.5, 41.8, 61.3, 125.0, 194.6] +rh_times = [33.4, 58.4, 66.7, 77.9, 152.8, 194.5] + +#T = data('T', time = 0) +#print(T) +#print(data.data.keys().values) + +#Plot a line for every output time: +#for time in data.data.data.keys().values: +# data.data.data[time].plot(ax=ax,x='x',y='T') + +#Plot lines for selected interpolated output times: +for t_hr in t_times: + t = t_hr * 3600 + data.update(time=t) + data.data.data.plot(ax=ax,x='id',y='T',label=str(t_hr)+' hr') + +plt.xlabel('Radial Position (m)') +plt.ylabel('Temperature ($\degree$C)') + +plt.savefig('temp_plot.pdf') + +f2 = plt.figure(2, figsize=(6,4.5)) +ax = plt.gca() + +for t_hr in rh_times: + t = t_hr * 3600 + data.update(time=t) + data.data.data.plot(ax=ax,x='id',y='rh',label=str(t_hr)+' hr') + +plt.xlabel('Radial Position (m)') +plt.ylabel('$h_r$') + +plt.savefig('rh_plot.pdf') diff --git a/test/tests/concrete_moisture_heat_transfer/tests b/test/tests/concrete_moisture_heat_transfer/tests index f6ff6933f..fd5e57ec1 100644 --- a/test/tests/concrete_moisture_heat_transfer/tests +++ b/test/tests/concrete_moisture_heat_transfer/tests @@ -2,11 +2,12 @@ design = 'ConcreteThermalMoisture.md' [maqbeth] issues = '#91' - requirement = 'Blackbear shall model heat transfer and moisture transport in concrete.' + requirement = 'Blackbear shall model heat transfer and moisture transport in concrete, producing results from a 1D axisymmetric simulation that are comparable to those obtained in the MAQBETH experiment.' type = 'Exodiff' - input = 'maqbeth.i' - exodiff = 'maqbeth_out.e' - skip = 'temporary - avoid failure in debug tests' + input = 'maqbeth_1d.i' + exodiff = 'maqbeth_1d_out.e' + rel_err = 1e-6 + abs_zero = 1e-10 [] [thermal_properties] issues = '#91'