diff --git a/data/Ocracoke_init_data/Ocracoke-CASCADE-parameters.yaml b/data/Ocracoke_init_data/Ocracoke-CASCADE-parameters.yaml index 183a55a..3ebd66c 100644 --- a/data/Ocracoke_init_data/Ocracoke-CASCADE-parameters.yaml +++ b/data/Ocracoke_init_data/Ocracoke-CASCADE-parameters.yaml @@ -39,14 +39,14 @@ Sandbag_elevation: 1.9 SeededRNG: true Seedmax: 1000.0 Seedmin: 100.0 -ShorefaceToe: 1560.3448275999995 +ShorefaceToe: 1518.9655171999996 ShrubEl_max: 2.3 ShrubEl_min: 1.2 Shrub_ON: 0 SprayDist: 170 StormSeries: [] StormStart: 2 -TMAX: 126 +TMAX: 23 TideAmp: 1.2 TimeFruit: 5.0 UprootLimit: -0.2 @@ -54,7 +54,7 @@ beta: 0.04 disp_mu: -0.721891 disp_sigma: 1.5 dune_file: C:\Users\frank\PycharmProjects\CASCADE\data\Ocracoke_init_data\dunes\Sample_1_dune.npy -elevation_file: C:\Users\frank\PycharmProjects\CASCADE\data\Ocracoke_init_data\elevations\Topography_2019\Domain_49_topography_2019.npy +elevation_file: C:\Users\frank\PycharmProjects\CASCADE\data\Ocracoke_init_data\elevations\Sample_1_topography.npy enable_sandbags: false growth_param_file: growthparam_1000dam.npy k_sf: 19324.753176079226 @@ -65,4 +65,4 @@ rmin: 0.55 s_sf_eq: 0.01698590034494604 sandbag_elevation: 1.8 sandbag_need: false -storm_file: C:\Users\frank\PycharmProjects\CASCADE\data\Ocracoke_init_data\storms\Synthetic_Storms\Ten_Percent_Storms\OCR_Future_StormList_99_10.npy +storm_file: C:\Users\frank\PycharmProjects\CASCADE\data\Ocracoke_init_data\storms\Hindcast_Storms\OCR_1997_2022_Final_Hindcast_Storms.npy diff --git a/scripts/ocracoke_ms/Future_Runs_Test.py b/scripts/ocracoke_ms/Future_Runs_Test.py index 16c9dca..c4c2d93 100644 --- a/scripts/ocracoke_ms/Future_Runs_Test.py +++ b/scripts/ocracoke_ms/Future_Runs_Test.py @@ -13,7 +13,7 @@ Management_Name = ['Status_Quo','Natural', 'Nourishment'] #RSLR_Rate = ['IL','I','IH'] -RSLR_Rate = ['IL','IH'] +RSLR_Rate = ['IL','I','IH'] Sink_Name = ['Erosional_Sink','Accretional_Sink'] #Sink_Name = ['Accretional_Sink'] @@ -50,6 +50,9 @@ def Process_Batch(Base_Name, All_EP_Change = [] All_Roadway_Abandonment = [] All_Abandonment_Reason = [] + All_Initial_Island_Elevations = [] + All_Final_Island_Elevations = [] + All_Elevation_Changes = [] Island_Drowning = {} Years_Modeled_List = [] Relocation_TS = [] @@ -110,6 +113,12 @@ def Process_Batch(Base_Name, buffer_length=buffer_length, number_barrier3d_models=number_barrier3d_models) + Elevation_Change_Output, Initial_Elevation_Output, Final_Elevation_Output = Calculate_Island_Elevation_Metrics( + cascade=Cascade_List, + buffer_length=buffer_length, + number_barrier3d_models=number_barrier3d_models) + + Total_Volume_TS.append(copy.deepcopy(Total_Volume)) All_Nourishment_TS.append(copy.deepcopy(All_Nourishment)) Relocation_TS.append(copy.deepcopy(roadway_relocation)) @@ -121,6 +130,11 @@ def Process_Batch(Base_Name, Model_Run_Years.append(copy.deepcopy(Model_Run_Year)) Drowning_Domain_Locations.append(copy.deepcopy(Drowning_Domain_Location)) Total_Overwash_TS.append(copy.deepcopy(Total_OW_Volume)) + All_Initial_Island_Elevations.append(copy.deepcopy(Initial_Elevation_Output)) + All_Final_Island_Elevations.append(copy.deepcopy(Final_Elevation_Output)) + All_Elevation_Changes.append(copy.deepcopy(Elevation_Change_Output)) + + z = 10 # Calculate the mean values for all runs @@ -152,6 +166,9 @@ def Process_Batch(Base_Name, 'All_Nourishment_TS':All_Nourishment_TS, 'All_Overwash_volume':Total_Overwash_TS, 'Roadway_Abandonment_Reason':All_Abandonment_Reason, + 'Island_Initial_Elevation':All_Initial_Island_Elevations, + 'Island_Final_Elevation':All_Final_Island_Elevations, + 'Island_Elevation_Change':All_Elevation_Changes } All_Values_Data_Frame = pd.DataFrame(All_Values_Dict) @@ -370,6 +387,56 @@ def Calculate_Roadway_Abandonmet(cascade, years_modeled, buffer_length, number_b x = 10 return(Road_Drowning_Years,Road_Drowning_Reason) +def Calculate_Island_Elevation_Metrics(cascade, buffer_length, number_barrier3d_models): + Domains_of_Interest = range(buffer_length, (number_barrier3d_models - buffer_length)) + b3d = cascade.barrier3d + + Elevation_Change_TS = [] + Initial_Elevation_TS = [] + Final_Elevation_TS = [] + + for k in Domains_of_Interest: + Temp_B3D = b3d[k] + Shoreline_Change_TS = Temp_B3D._ShorelineChangeTS + + # Find the initial and final island interior elevations + initial_elev = Temp_B3D.DomainTS[0] + final_elev = Temp_B3D.DomainTS[Temp_B3D.time_index-1] + + # Find the initial dune crest elevation + initial_dune = Temp_B3D.DuneDomain[0] + final_dune_elev = Temp_B3D.DuneDomain[Temp_B3D.time_index-1] + + # Rotate np arrays to concat with + initial_dune_elev_r = np.rot90(initial_dune,k=3) + final_dune_elev_r = np.rot90(final_dune_elev,k=3) + + # Add dunes to front of initial elevation + combined_initial_elev = np.concatenate((initial_dune_elev_r,initial_elev),axis=0) + + distance_traveled = int(abs(np.sum(Shoreline_Change_TS[0:int(Temp_B3D.time_index)]))) + + blank_cells = np.full((distance_traveled,int(Temp_B3D.BarrierLength)),-0.3) + + updated_final_array = np.concatenate((np.concatenate((blank_cells,final_dune_elev_r),axis=0),final_elev),axis=0) + + if len(combined_initial_elev) > len(updated_final_array): + len_difference = len(combined_initial_elev) - len(updated_final_array) + extra_cells = np.full((len_difference,int(Temp_B3D.BarrierLength)),-0.3) + updated_final_array = np.concatenate((updated_final_array,extra_cells),axis=0) + elif len(combined_initial_elev) < len(updated_final_array): + len_difference = len(updated_final_array) - len(combined_initial_elev) + extra_cells = np.full((len_difference,int(Temp_B3D.BarrierLength)),-0.3) + combined_initial_elev = np.concatenate((combined_initial_elev,extra_cells),axis=0) + + elev_difference = np.subtract(updated_final_array,combined_initial_elev) + + Elevation_Change_TS.append(copy.deepcopy(elev_difference)) + Initial_Elevation_TS.append(copy.deepcopy(combined_initial_elev)) + Final_Elevation_TS.append(copy.deepcopy(updated_final_array)) + + return (Elevation_Change_TS,Initial_Elevation_TS,Final_Elevation_TS) + def Calculate_Roadway_Relocation(cascade, years_modeled,buffer_length, number_barrier3d_models): Relocations = [] Frequency = [] diff --git a/scripts/ocracoke_ms/Hindcast_Test_Script.py b/scripts/ocracoke_ms/Hindcast_Test_Script.py index 1994aa6..7297f47 100644 --- a/scripts/ocracoke_ms/Hindcast_Test_Script.py +++ b/scripts/ocracoke_ms/Hindcast_Test_Script.py @@ -32,9 +32,9 @@ run_name_batch = [] -run_name_batch.append('OCR_1974_1997_Hindcast_Final') -run_name_batch.append('OCR_1997_2020_Hindcast_Final') - +#run_name_batch.append('OCR_1974_1997_Hindcast_Final') +#run_name_batch.append('OCR_1997_2020_Hindcast_Final') +run_name_batch.append('OCR_IH_Status_Quo_S14_Erosional_Sink') nt_run = 23 number_barrier3d_models = 70 buffer_length = 15 @@ -121,15 +121,15 @@ if Interior_Dune_Building[years] == 1: Temp_Years_Interior.append(copy.deepcopy(years)) if len(Temp_Years) > 0: - Dune_Rebuilding_Years[str(m-4)] = copy.deepcopy(Temp_Years) + Dune_Rebuilding_Years[str(m)] = copy.deepcopy(Temp_Years) if len(Temp_Years_Interior) > 0: - Dune_Interior_Building_Years[str(m-4)] = copy.deepcopy(Temp_Years_Interior) + Dune_Interior_Building_Years[str(m)] = copy.deepcopy(Temp_Years_Interior) if len(Temp_Years) > 0 and len(Temp_Years_Interior) == 0: - Combined_Dune_building_years[str(m-4)] = (copy.deepcopy(Temp_Years)) + Combined_Dune_building_years[str(m)] = (copy.deepcopy(Temp_Years)) elif len(Temp_Years) == 0 and len(Temp_Years_Interior) > 0: - Combined_Dune_building_years[str(m-4)] = copy.deepcopy(Temp_Years_Interior) + Combined_Dune_building_years[str(m)] = copy.deepcopy(Temp_Years_Interior) elif len(Temp_Years) > 0 and len(Temp_Years_Interior) > 0: - Combined_Dune_building_years[str(m-4)] = copy.deepcopy(np.sort(np.append(Temp_Years,Temp_Years_Interior))) + Combined_Dune_building_years[str(m)] = copy.deepcopy(np.sort(np.append(Temp_Years,Temp_Years_Interior))) All_Dune_Rebuilding_TS_Temp.append(copy.deepcopy(All_Dune_Rebuilding)) @@ -183,7 +183,7 @@ if All_Sandbag_Building[years] == 1: Temp_Years.append(copy.deepcopy(years)) if len(Temp_Years) > 0: - Sandbag_Years[str(n-4)] = (copy.deepcopy(Temp_Years)) + Sandbag_Years[str(n)] = (copy.deepcopy(Temp_Years)) All_Sandbag_Building_TS_Temp.append(copy.deepcopy(All_Sandbag_Building)) All_Sandbag_Building_TS.append(copy.deepcopy(All_Sandbag_Building_TS_Temp)) Sandbag_Presence_Years_Dict[str(run_name_batch[k])] = copy.deepcopy(Sandbag_Years) @@ -191,6 +191,16 @@ domain_nums = range(11,50) +# Look at the interior to show differences + + + + + + + + + # Set Font SMALL_SIZE = 8 diff --git a/scripts/ocracoke_ms/Make_Interior_Transects.py b/scripts/ocracoke_ms/Make_Interior_Transects.py new file mode 100644 index 0000000..93fe987 --- /dev/null +++ b/scripts/ocracoke_ms/Make_Interior_Transects.py @@ -0,0 +1,80 @@ +import copy + +import numpy as np +import time + +import matplotlib.pyplot as plt + +import os +import imageio + + +os.chdir('C:\\Users\\frank\\PycharmProjects\\CASCADE\\Run_output') + + +#run_name_batch='OCR_1997_2020_Hindcast_Final' +run_name_batch='OCR_1997_2020_Hindcast_Final' + +nt_run = 23 +number_barrier3d_models = 70 +buffer_length = 15 + + +# --------- plot --------- +output = np.load(run_name_batch + ".npz", allow_pickle=True) +cascade = output["cascade"] +cascade = cascade[0] +b3d = cascade.barrier3d[48] +ny = np.size(b3d) +roads = cascade.roadways[48] +dunes = b3d.DuneDomain + + +transects_ts = [] +for k in range(cascade._nt): + dune_temp = np.mean(dunes[k],axis=0) + dune_temp = dune_temp+ (b3d.BermEl ) + interior_mean = np.mean(b3d.DomainTS[k], axis=1) + if k == 0: + dummy_cells = b3d.ShorelineChangeTS[k] + elif k == 22: + dummy_cells = abs(np.sum(b3d.ShorelineChangeTS)) + else: + dummy_cells = abs(np.sum(b3d.ShorelineChangeTS[:k+1])) + if dummy_cells > 0: + add_cells = np.zeros(int(dummy_cells)) + dune_temp = np.append(add_cells,dune_temp) + final_transect = np.append(dune_temp,interior_mean) + transects_ts.append(copy.deepcopy(final_transect*10)) + +#transect_10 = b3d.DomainTS[10][:,10] + +#plt.plot(transects_ts[0][0:40],label='0') +'''ax = plt.gca() +plt.plot(transects_ts[12][0:35],label='12') +plt.plot(transects_ts[13][0:35],label='13') +ax.set_ylim([-2,4]) +plt.title('Dune Rebuilding') +plt.ylabel('') +plt.xlabel('Cross-shore position') +plt.legend() +#plt.savefig(fname=('C:\\Users\\frank\\OneDrive - University of North Carolina at Chapel Hill\\Chapter 3\\Figures\\Hindcast_Rebuilding_47.eps'),format='eps') +plt.show()''' + + +ax = plt.gca() +plt.axhline(y = 2.2, color = 'k', linestyle = '--') +plt.plot(transects_ts[22][0:35],label='22') +#plt.plot(transects_ts[15][0:40],label='15') +ax.set_ylim([-2,3]) +plt.title('Dune Rebuilding') +plt.ylabel('') +plt.xlabel('Cross-shore position') +plt.legend() +plt.savefig(fname=('C:\\Users\\frank\\OneDrive - University of North Carolina at Chapel Hill\\Chapter 3\\Figures\\Hindcast_Rebuilding_48_End.eps'),format='eps') +plt.show() + +x = 10 + + +transect = b3d.DomainTS[0][:,0] \ No newline at end of file diff --git a/scripts/ocracoke_ms/Plot_Nourishment_Transect.py b/scripts/ocracoke_ms/Plot_Nourishment_Transect.py new file mode 100644 index 0000000..42cadcf --- /dev/null +++ b/scripts/ocracoke_ms/Plot_Nourishment_Transect.py @@ -0,0 +1,199 @@ +import os +import numpy as np +import matplotlib.pyplot as plt +import math + +def fig3_initialCNH_topo( + cascade_model_list, # must be from a nourishment simulation (i.e., have a beach width) + km_on=True, + year_wanted = 0, +): + fig, axs = plt.subplots(1, 4, figsize=(10, 3), sharey=True, sharex=True) + + # make the mat image of the beach to the back-barrier; stole this code from the animation plots above + for iCascade in range(len(cascade_model_list)): + cascade = cascade_model_list[iCascade] + barrier3d = cascade.barrier3d[35:52] + domain_num = 35 + BarrierLength = barrier3d[0]._BarrierLength + OriginY = 16 + AniDomainWidth = 120 # end Y + z = int(year_wanted) + ny = 1 + iB3D = 0 + AnimateDomain = np.ones([AniDomainWidth + 1, BarrierLength * ny]) * -1 + scts = 0 # make shoreline position relative to zero starting + + # Build beach elevation domain, we only show beach width decreasing in increments of 10 m and we don't + # illustrate a berm, just a sloping beach up to the elevation of the berm + BeachWidth = math.floor( + cascade.nourishments[domain_num].beach_width[0] / 10 + ) # switched from ceil + BeachDomain = np.zeros( + [ + BeachWidth, + BarrierLength, + ] + ) + # beach width must be greater than zero + add = (barrier3d[iB3D].BermEl - barrier3d[iB3D]._SL) / (BeachWidth + 1) + for i in range(0, BeachWidth): + BeachDomain[i, :] = (barrier3d[iB3D]._SL + add) * (i + 1) + + # Make animation frame domain + Domain = barrier3d[iB3D]._DomainTS[z] * 10 # m MHW + Dunes = ( + barrier3d[iB3D]._DuneDomain[z, :, :] + barrier3d[iB3D]._BermEl + ) * 10 # m MHW + Dunes = np.rot90(Dunes) + Dunes = np.flipud(Dunes) + Beach = BeachDomain * 10 + Domain = np.vstack([Beach, Dunes, Domain]) + Domain[Domain < 0] = -1 # anything underwater + widthTS = len(Domain) + OriginTstart = OriginY + math.floor(scts) # ceil + OriginTstop = OriginTstart + widthTS + xOrigin = iB3D * BarrierLength + AnimateDomain[ + OriginTstart:OriginTstop, xOrigin : xOrigin + BarrierLength + ] = Domain + + # plot + print(np.max(AnimateDomain)) + cax = axs[iCascade].matshow( + AnimateDomain, origin="lower", cmap="terrain", vmin=-1, vmax=3.0 + ) # , interpolation='gaussian') # analysis:ignore + axs[iCascade].xaxis.set_ticks_position("bottom") + axs[iCascade].set(xlabel="alongshore distance (dam)") + if km_on: + axs[iCascade].set(xlabel="alongshore distance (km)") + axs[iCascade].set_ylim([40, 110]) + axs[iCascade].set_xlim([-1, 50]) + + axs[0].set(ylabel="cross-shore distance (dam)") + # cbar = fig.colorbar(cax) + # cbar.set_label("elevation (m MHW)", rotation=270) + # plt.tight_layout() + if km_on: + locs, _ = plt.yticks() + plt.yticks(locs, locs / 100) + locs, _ = plt.xticks() + plt.xticks(locs[1:], locs[1:] / 100) + axs[0].set(ylabel="cross-shore distance (km)") + + # now make the cross-section; stole this from the cross-section code above and modified + v = 10 # just use the 10th transect + fig, axs = plt.subplots(1, 2, figsize=(10, 3), sharey=True, sharex=True) + + for iCascade in range(len(cascade_model_list)): + cascade = cascade_model_list[iCascade] + + sea_level = barrier3d[iB3D]._SL + + # Create data points + shoreface_toe_x = ( + barrier3d[iB3D].x_t_TS[z] - barrier3d[iB3D].x_t_TS[z] + ) + shoreface_toe_y = (sea_level - barrier3d[iB3D].DShoreface) * 10 # m + shoreline_x = ( + barrier3d[iB3D].x_s_TS[z] - barrier3d[iB3D].x_t_TS[z] + ) + shoreline_y = sea_level * 10 # m + bay_y = (sea_level - barrier3d[iB3D]._BayDepth) * 10 # m + end_of_bay_y = bay_y + + berm_x = shoreline_x + ( + cascade.nourishments[domain_num].beach_width[z] / 10 + ) # beach width (in dam) + berm_y = ( + barrier3d[iB3D]._BermEl * 10 + ) + shoreline_y # convert to meters + dune_toe_x = berm_x + dune_toe_y = berm_y + + interior_y = barrier3d[iB3D]._DomainTS[0] + interior_y = interior_y[:, v] + print( + np.max(barrier3d[iB3D]._DuneDomain[z, v, :] * 10) + ) # max dune height + dunes_y = ( + barrier3d[iB3D]._DuneDomain[z, v, :] + + barrier3d[iB3D]._BermEl + ) + cross_barrier_y = np.insert(interior_y, 0, dunes_y) + cross_barrier_y = (cross_barrier_y * 10) + shoreline_y # Convert to meters + cross_barrier_x = np.arange(0, len(cross_barrier_y), 1) + dune_toe_x + + end_of_bay_x = ( + cross_barrier_x[-1] + 20 + ) # just add a buffer to the end of the plt + + x = np.hstack( + [ + shoreface_toe_x, + shoreline_x, + berm_x, + dune_toe_x, + cross_barrier_x, + end_of_bay_x, + ] + ) + y = np.hstack( + [ + shoreface_toe_y, + shoreline_y, + berm_y, + dune_toe_y, + cross_barrier_y, + end_of_bay_y, + ] + ) + + # Plot + if iCascade < 2: # just the 0.45 cases + axs[0].plot(x, y) + axs[0].hlines( + sea_level * 10, shoreface_toe_x, end_of_bay_x, colors="dodgerblue" + ) + # axs[0].set_xlim([0, 110]) + axs[0].set(xlabel="cross-shore distance (dam)") + axs[0].set(ylabel="elevation (m MHW)") + else: # 0.75 cases + axs[1].plot(x, y) + axs[1].hlines( + sea_level * 10, shoreface_toe_x, end_of_bay_x, colors="dodgerblue" + ) + # axs[1].set_xlim([0, 110]) + axs[1].set(xlabel="cross-shore distance (dam)") + plt.tight_layout() + plt.savefig(fname=('C:\\Users\\frank\\OneDrive - University of North Carolina at Chapel Hill\\Chapter 3\\Figures\\Nourishment_11.eps'),format='eps') + plt.show() + + if km_on: + locs, _ = plt.xticks() + plt.xticks(locs[1:], locs[1:] / 100) + axs[0].set(xlabel="cross-shore distance (km)") + axs[1].set(xlabel="cross-shore distance (km)") + axs[0].set_xlim([-1, 141]) + axs[1].set_xlim([-1, 141]) + axs[0].legend(["profile A", "profile B"]) + axs[1].legend(["profile C", "profile D"]) + + + +os.chdir('C:\\Users\\frank\\PycharmProjects\\CASCADE\\Run_output') + + +run_name_batch='OCR_IH_Nourishment_S49_Erosional_Sink' + +number_barrier3d_models = 70 +buffer_length = 15 + + +# --------- plot --------- +output = np.load(run_name_batch + ".npz", allow_pickle=True) +cascade = output["cascade"] +cascade = cascade[0] + +fig3_initialCNH_topo(cascade_model_list=[cascade], + year_wanted = 11) \ No newline at end of file diff --git a/scripts/ocracoke_ms/Test_Elevation_Change.py b/scripts/ocracoke_ms/Test_Elevation_Change.py index 91fcee5..1178b0e 100644 --- a/scripts/ocracoke_ms/Test_Elevation_Change.py +++ b/scripts/ocracoke_ms/Test_Elevation_Change.py @@ -9,7 +9,7 @@ os.chdir('E:\\Model_Runs') -run_name ='OCR_IH_Status_Quo_S84_Accretional_Sink' +run_name ='OCR_IL_Status_Quo_S2_Erosional_Sink' output = np.load(run_name + ".npz", allow_pickle=True) cascade = output["cascade"] @@ -19,35 +19,71 @@ Buffer_Domains = 15 + + + Domains_of_Interest = range(Buffer_Domains,(len(b3d)-Buffer_Domains)) -for k in Domains_of_Interest: - Temp_B3D = b3d[k] - Shoreline_Change_TS = Temp_B3D._ShorelineChangeTS - #for k in range(0,Temp_B3D.time_index): - initial_elev = Temp_B3D.DomainTS[0] - final_elev = Temp_B3D.DomainTS[Temp_B3D.time_index-1] - distance_traveled = int(abs(np.sum(Shoreline_Change_TS[0:int(Temp_B3D.time_index)]))) +def Calculate_Island_Elevation_Metrics(cascade, buffer_length, number_barrier3d_models): + Domains_of_Interest = range(buffer_length, (number_barrier3d_models - buffer_length)) + b3d = cascade.barrier3d + + Elevation_Change_TS = [] + Initial_Elevation_TS = [] + Final_Elevation_TS = [] + + for k in Domains_of_Interest: + Temp_B3D = b3d[k] + Shoreline_Change_TS = Temp_B3D._ShorelineChangeTS + + # Find the initial and final island interior elevations + initial_elev = Temp_B3D.DomainTS[0] + final_elev = Temp_B3D.DomainTS[Temp_B3D.time_index-1] + + # Find the initial dune crest elevation + initial_dune = Temp_B3D.DuneDomain[0] + final_dune_elev = Temp_B3D.DuneDomain[Temp_B3D.time_index-1] + + # Rotate np arrays to concat with + initial_dune_elev_r = np.rot90(initial_dune,k=3) + final_dune_elev_r = np.rot90(final_dune_elev,k=3) + + # Add dunes to front of initial elevation + combined_initial_elev = np.concatenate((initial_dune_elev_r,initial_elev),axis=0) + + distance_traveled = int(abs(np.sum(Shoreline_Change_TS[0:int(Temp_B3D.time_index)]))) + + blank_cells = np.full((distance_traveled,int(Temp_B3D.BarrierLength)),-0.3) + + updated_final_array = np.concatenate((np.concatenate((blank_cells,final_dune_elev_r),axis=0),final_elev),axis=0) + + if len(combined_initial_elev) > len(updated_final_array): + print('Add Extra Cells to final array') + len_difference = len(combined_initial_elev) - len(updated_final_array) + extra_cells = np.full((len_difference,int(Temp_B3D.BarrierLength)),-0.3) + updated_final_array = np.concatenate((updated_final_array,extra_cells),axis=0) + elif len(combined_initial_elev) < len(updated_final_array): + print('Add extra cells to initial array') + len_difference = len(updated_final_array) - len(combined_initial_elev) + extra_cells = np.full((len_difference,int(Temp_B3D.BarrierLength)),-0.3) + combined_initial_elev = np.concatenate((combined_initial_elev,extra_cells),axis=0) + else: + print('They have equal lengths') + + elev_difference = np.subtract(updated_final_array,combined_initial_elev) + + Elevation_Change_TS.append(copy.deepcopy(elev_difference)) + Initial_Elevation_TS.append(copy.deepcopy(combined_initial_elev)) + Final_Elevation_TS.append(copy.deepcopy(updated_final_array)) - blank_cells = np.full((distance_traveled,int(Temp_B3D.BarrierLength)),-0.3) + return (Elevation_Change_TS,Initial_Elevation_TS,Final_Elevation_TS) - updated_final_array = np.concatenate((blank_cells,final_elev),axis=0) - if len(initial_elev) > len(updated_final_array): - print('Add Extra Cells to final array') - len_difference = len(initial_elev) - len(updated_final_array) - extra_cells = np.full((len_difference,int(Temp_B3D.BarrierLength)),-0.3) - updated_final_array = np.concatenate((updated_final_array,extra_cells),axis=0) - elif len(initial_elev) < len(updated_final_array): - print('Add extra cells to initial array') - len_difference = len(updated_final_array) - len(initial_elev) - extra_cells = np.full((len_difference,int(Temp_B3D.BarrierLength)),-0.3) - initial_elev = np.concatenate((initial_elev,extra_cells),axis=0) - else: - print('They have equal lengths') +Elevation_Change_Output, Initial_Elevation_Output, Final_Elevation_Output = Calculate_Island_Elevation_Metrics(cascade=cascade, + buffer_length=Buffer_Domains, + number_barrier3d_models=ny) - elev_difference = np.subtract(updated_final_array,initial_elev) - c = 20 +c = 20 x = 10 \ No newline at end of file diff --git a/scripts/ocracoke_ms/plot_script.py b/scripts/ocracoke_ms/plot_script.py index 022ea16..f5d98ec 100644 --- a/scripts/ocracoke_ms/plot_script.py +++ b/scripts/ocracoke_ms/plot_script.py @@ -54,7 +54,7 @@ def plot_ElevAnimation_CASCADE( + MaxBeachWidth + np.abs(barrier3d[0]._ShorelineChange) + OriginY - + 100 #170 #500 ######!!!!#important + + 50 #170 #500 ######!!!!#important ) os.chdir(directory) @@ -168,7 +168,7 @@ def plot_ElevAnimation_CASCADE( ax = elevFig1.add_subplot(111) cax = ax.pcolormesh( AnimateDomain, - cmap="terrain", + cmap="gray", vmin=-1.1, vmax=z_lim, # edgecolors="w", # for debugging @@ -276,7 +276,7 @@ def plot_ElevAnimation_CASCADE( ax = elevFig2.add_subplot(111) cax = ax.pcolormesh( AnimateDomain, - cmap="terrain", + cmap="gray", vmin=-1.1, vmax=z_lim, # edgecolors="w", # for debugging @@ -374,14 +374,15 @@ def plot_ElevAnimation_CASCADE( os.chdir('C:\\Users\\frank\\PycharmProjects\\CASCADE\\Run_output') -run_name = "OCR_IL_Natural_S42_10_Accretional_Sink" - +run_name = "OCR_IL_Natural_S42_Accretional_Sink" +#run_name = 'OCR_IH_Status_Quo_S29_Erosional_Sink' +#run_name = 'OCR_IH_Status_Quo_S14_Erosional_Sink' name_prefix = run_name nt_run = 120 -number_barrier3d_models = 5 +number_barrier3d_models = 1 Run_Marsh_Dynamics = False -Model_Grids_Of_Interest = range(40,47) +Model_Grids_Of_Interest = [40] #range(41,42) # --------- plot --------- output = np.load(run_name + ".npz", allow_pickle=True) @@ -408,7 +409,7 @@ def plot_ElevAnimation_CASCADE( beach_management_ny=beach_management_ny, roadway_management_ny=roadway_management_ny, y_lim=None, - z_lim=6, + z_lim=3.5, fig_size=None, fig_eps=False, Model_Grids_Of_Interest = Model_Grids_Of_Interest, diff --git a/scripts/ocracoke_ms/run_forward_batch_forward_simulations.py b/scripts/ocracoke_ms/run_forward_batch_forward_simulations.py index 895ff13..86acacb 100644 --- a/scripts/ocracoke_ms/run_forward_batch_forward_simulations.py +++ b/scripts/ocracoke_ms/run_forward_batch_forward_simulations.py @@ -202,7 +202,7 @@ def alongshore_connected( trigger_dune_knockdown=False, group_roadway_abandonment=None, sandbag_management_on = False, - sandbag_elevation = 5, + sandbag_elevation = 2, enable_shoreline_offset = False, shoreline_offset = [0], user_inputed_RSLR=False, diff --git a/scripts/ocracoke_ms/run_script_buffer.py b/scripts/ocracoke_ms/run_script_buffer.py index 0240372..9422ab9 100644 --- a/scripts/ocracoke_ms/run_script_buffer.py +++ b/scripts/ocracoke_ms/run_script_buffer.py @@ -17,17 +17,17 @@ dune_load_name = 'C:\\Users\\frank\\PycharmProjects\\CASCADE\\data\\Ocracoke_init_data\\Buffer_Shoreline_Offsets.csv' -start_year = 1974 +start_year = 1997 if start_year == 1974: year = 0 - run_name = 'OCR_1974_1997_Hindcast_Final' + run_name = 'OCR_1974_1997_Hindcast_Final_3' s_file = 'C:\\Users\\frank\\PycharmProjects\\CASCADE\\data\\Ocracoke_init_data\\storms\\Hindcast_Storms\\OCR_1974_2022_Final_Hindcast_Storms.npy' else: year = 2 - run_name = 'OCR_1997_2020_Hindcast_Final' + run_name = 'OCR_1997_2020_Hindcast_Final_3' s_file = 'C:\\Users\\frank\\PycharmProjects\\CASCADE\\data\\Ocracoke_init_data\\storms\\Hindcast_Storms\\OCR_1997_2022_Final_Hindcast_Storms.npy'