diff --git a/Golden_Repo/a/AMBER/Fix_FFTW_find_error_due_to_MPI_components.patch b/Golden_Repo/a/AMBER/Fix_FFTW_find_error_due_to_MPI_components.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7a0851792102771354c98ed172ae8d03d4734964
--- /dev/null
+++ b/Golden_Repo/a/AMBER/Fix_FFTW_find_error_due_to_MPI_components.patch
@@ -0,0 +1,40 @@
+diff -ruN A20_src/AmberTools/src/quick/cmake/jedbrown/FindFFTW.cmake A20_src1/AmberTools/src/quick/cmake/jedbrown/FindFFTW.cmake
+Fix MPI related errors in CMake FindFFTW modules
+author: Sandipan Mohanty (Juelich Supercomputing Centre)
+--- A20_src/AmberTools/src/quick/cmake/jedbrown/FindFFTW.cmake	2023-01-28 14:19:26.575506981 +0100
++++ A20_src1/AmberTools/src/quick/cmake/jedbrown/FindFFTW.cmake	2023-01-28 14:05:09.172659586 +0100
+@@ -242,7 +242,7 @@
+ 
+ 	set(CMAKE_REQUIRED_LIBRARIES ${FFTW_LIBRARY_MPI})
+ 	if(EXISTS "${FFTW_LIBRARY_MPI}")
+-		fftw_check_c_function(fftw_mpi_init FFTW_MPI_WORKS)
++		fftw_check_c_function(fftw_mpi_init FFTW_MPI_WORKS ${FFTW_LIBRARY_MPI} ${FFTW_LIBRARY_SERIAL} ${MPI_C_LIBRARIES})
+ 	else()
+ 		set(FFTW_MPI_WORKS FALSE)
+ 	endif()
+@@ -365,4 +365,4 @@
+ endif()
+ 
+ # don't leak required libraries
+-set(CMAKE_REQUIRED_LIBRARIES "")
+\ No newline at end of file
++set(CMAKE_REQUIRED_LIBRARIES "")
+diff -ruN A20_src/cmake/jedbrown/FindFFTW.cmake A20_src1/cmake/jedbrown/FindFFTW.cmake
+--- A20_src/cmake/jedbrown/FindFFTW.cmake	2023-01-28 14:18:50.145392374 +0100
++++ A20_src1/cmake/jedbrown/FindFFTW.cmake	2023-01-28 14:03:56.662393042 +0100
+@@ -242,7 +242,7 @@
+ 
+ 	set(CMAKE_REQUIRED_LIBRARIES ${FFTW_LIBRARY_MPI})
+ 	if(EXISTS "${FFTW_LIBRARY_MPI}")
+-		fftw_check_c_function(fftw_mpi_init FFTW_MPI_WORKS)
++		fftw_check_c_function(fftw_mpi_init FFTW_MPI_WORKS ${FFTW_LIBRARY_MPI} ${FFTW_LIBRARY_SERIAL} ${MPI_C_LIBRARIES})
+ 	else()
+ 		set(FFTW_MPI_WORKS FALSE)
+ 	endif()
+@@ -365,4 +365,4 @@
+ endif()
+ 
+ # don't leak required libraries
+-set(CMAKE_REQUIRED_LIBRARIES "")
+\ No newline at end of file
++set(CMAKE_REQUIRED_LIBRARIES "")
diff --git a/Golden_Repo/a/AMBER/Fix_netcdf_find_error_due_to_missed_F77_F90_interfaces.patch b/Golden_Repo/a/AMBER/Fix_netcdf_find_error_due_to_missed_F77_F90_interfaces.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7850e149d00dc1e31667c71147b7f6e2e24b37ee
--- /dev/null
+++ b/Golden_Repo/a/AMBER/Fix_netcdf_find_error_due_to_missed_F77_F90_interfaces.patch
@@ -0,0 +1,14 @@
+diff -ruN A20_src/cmake/jedbrown/FindNetCDF.cmake A20_src1/cmake/jedbrown/FindNetCDF.cmake
+Fix NetCDF find errors in CMake modules due to F77 and F90 interface detection errors
+author: Sandipan Mohanty (Juelich Supercomputing Centre)
+--- A20_src/cmake/jedbrown/FindNetCDF.cmake	2023-01-28 14:29:38.347400350 +0100
++++ A20_src1/cmake/jedbrown/FindNetCDF.cmake	2023-01-28 14:02:28.892122573 +0100
+@@ -51,7 +51,7 @@
+ get_filename_component(NetCDF_lib_dirs "${NetCDF_LIBRARIES_C}" PATH)
+ 
+ macro (NetCDF_check_interface lang header libs)
+-	find_path (NetCDF_INCLUDES_${lang} NAMES ${header} HINTS "${NetCDF_INCLUDES}" NO_DEFAULT_PATH)
++	find_path (NetCDF_INCLUDES_${lang} NAMES ${header})
+   
+ 	find_library (NetCDF_LIBRARIES_${lang} NAMES ${libs} HINTS "${NetCDF_lib_dirs}")
+ 
diff --git a/Golden_Repo/a/AMBER/fix_nmrat_error.patch b/Golden_Repo/a/AMBER/fix_nmrat_error.patch
new file mode 100644
index 0000000000000000000000000000000000000000..5bdaf088b19f893cd1142b25b9393ced1016423e
--- /dev/null
+++ b/Golden_Repo/a/AMBER/fix_nmrat_error.patch
@@ -0,0 +1,14 @@
+diff -ruN amber20_src/src/pmemd/src/cuda/gpu.cpp amber20_src1/src/pmemd/src/cuda/gpu.cpp
+Fix error about the 2D array nmrat being given 1 index before a comparison with 0
+author: Sandipan Mohanty (Juelich Supercomputing Centre)
+--- amber20_src/src/pmemd/src/cuda/gpu.cpp	2022-02-28 12:02:56.035534480 +0100
++++ amber20_src1/src/pmemd/src/cuda/gpu.cpp	2022-02-28 12:26:15.265104588 +0100
+@@ -2849,7 +2849,7 @@
+     }
+     // torsions, resttype = 3
+     else if (resttype[i] == 3) {
+-      if (nmrat[i][0] >= 0 && nmrat[i][1] >= 0 && nmrat[i][2] >= 0 && nmrat[3] >= 0) {
++      if (nmrat[i][0] >= 0 && nmrat[i][1] >= 0 && nmrat[i][2] >= 0 && nmrat[i][3] >= 0) {
+         torsions++;
+       }
+       else {