diff --git a/components/elm/bld/namelist_files/namelist_defaults.xml b/components/elm/bld/namelist_files/namelist_defaults.xml
index a373ae84e47b..9fb3399cca7b 100644
--- a/components/elm/bld/namelist_files/namelist_defaults.xml
+++ b/components/elm/bld/namelist_files/namelist_defaults.xml
@@ -334,7 +334,7 @@ lnd/clm2/surfdata_map/surfdata_64x128_simyr2000_c170111.nc
lnd/clm2/surfdata_map/surfdata_nldas2_simyr2000_c181207.nc
-
+
lnd/clm2/surfdata_map/surfdata_0.125x0.125_simyr2000_c190730.nc
lnd/clm2/surfdata_map/surfdata_0.9x1.25_simyr2000_c180404.nc
@@ -405,7 +405,7 @@ lnd/clm2/surfdata_map/surfdata_360x720cru_simyr1850_c180216.nc
lnd/clm2/surfdata_map/surfdata_48x96_simyr1850_c130927.nc
-
+
lnd/clm2/surfdata_map/surfdata_0.125x0.125_simyr1850_c190730.nc
lnd/clm2/surfdata_map/surfdata_0.9x1.25_simyr1850_c180306.nc
@@ -1695,13 +1695,6 @@ this mask will have smb calculated over the entire global land surface
-
-
-
-
-
-
@@ -2065,76 +2058,83 @@ this mask will have smb calculated over the entire global land surface
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
diff --git a/components/elm/bld/namelist_files/namelist_definition.xml b/components/elm/bld/namelist_files/namelist_definition.xml
index 7965c19be34f..2bfdcbb6f75a 100644
--- a/components/elm/bld/namelist_files/namelist_definition.xml
+++ b/components/elm/bld/namelist_files/namelist_definition.xml
@@ -1508,7 +1508,7 @@ If TRUE, irrigation will be active (find surface datasets with active irrigation
+"1000,850,1100,1350,1600,1850,1855,1865,1875,1885,1895,1905,1915,1925,1935,1945,1950,1955,1965,1975,1980,1985,1995,2000,2005,2010,2015,2025,2035,2045,2055,2065,2075,2085,2095,2100,2105">
Year to simulate and to provide datasets for (such as surface datasets, initial conditions, aerosol-deposition, Nitrogen deposition rates etc.)
A sim_year of 1000 corresponds to data used for testing only, NOT corresponding to any real datasets.
A sim_year greater than 2005 corresponds to rcp scenario data
diff --git a/components/elm/docs/user-guide/index.md b/components/elm/docs/user-guide/index.md
index 7995e54acb36..43fe53d66552 100644
--- a/components/elm/docs/user-guide/index.md
+++ b/components/elm/docs/user-guide/index.md
@@ -76,3 +76,11 @@ Using the above-mentioned settings:
[FATES](fates.md) can be run in various modes with ELM through the use of namelist settings.
The [FATES User's Guide section on namelist options](https://fates-users-guide.readthedocs.io/en/latest/user/Namelist-Options-and-Run-Time-Modes.html)
provides guidance on enabling these different FATES run modes.
+
+## Create land surface dataset
+
+A new surface dataset for ELM is generated using `mksurfdata_map` and the notes about it are available [here](surface_dataset.md)
+
+## Generate land initial condition
+
+Initial ELM condition can be generated using `interpinic` and the notes about it are available [here](interpinic.md).
diff --git a/components/elm/docs/user-guide/interpinic.md b/components/elm/docs/user-guide/interpinic.md
new file mode 100644
index 000000000000..f868ee7e8d2a
--- /dev/null
+++ b/components/elm/docs/user-guide/interpinic.md
@@ -0,0 +1,79 @@
+# Creating an ELM initial condition file
+
+An ELM initial condition (IC) file can be created by remapping an existing IC file from
+one resolution to another using the `interpinic`, located at
+`components/elm/tools/interpinic`. An ELM IC file is in the same format as an ELM restart file.
+The composet of the remapped IC file will be the same as that of the input IC file.
+So, for a new ELM SP-mode IC file, use an ELM input file corresponding to the SP-mode.
+
+The steps involved in creating a new IC files are as follows:
+
+1. Identifying an input ELM IC or restart file that will be remapped.
+2. Obtaining an ELM restart file at the new resolution.
+3. Compiling `interpinic` on the machine of interest.
+4. Running `interpinic` to perform the interpolation.
+
+The notes below provide an example of creating 1850 ELM IC file for the NARRM grid using E3SM v3 LR piControl from year = 0101. These notes are provided for Chrysalis.
+
+## 1. Identification of the input ELM IC file
+
+The identified input land condition file for this case is the following:
+
+```bash
+/lcrc/group/e3sm2/ac.golaz/E3SMv3/v3.LR.piControl/archive/rest/0101-01-01-00000/v3.LR.piControl.elm.r.0101-01-01-00000.nc
+```
+
+## 2. Obtaining an ELM restart file
+
+Using an existing NARRM land IC and making a copy of it
+
+```bash
+cd components/elm/tools/interpinic
+
+cp /lcrc/group/e3sm/data/inputdata/lnd/clm2/initdata_map/elmi.v3-NARRM.northamericax4v1pg2_r025_IcoswISC30E3r5.1870-01-01-00000.c20240704.nc \
+elmi.v3-NARRM.northamericax4v1pg2_r025_IcoswISC30E3r5.1850-01-01-00000.c`date "+%Y%m%d"`.nc
+```
+
+## 3. Compiling `interpinic`
+
+```bash
+# Load relevant modules
+cd
+eval $(./cime/CIME/Tools/get_case_env)
+
+# change directory
+cd components/elm/tools/interpinic/src
+
+export USER_LDFLAGS="-L$NETCDF_C_DIR/lib -lnetcdf -L$NETCDF_F_DIR/lib -lnetcdff -L$HDF5_DIR/lib -lhdf5"
+
+USER_FC=ifort LIB_NETCDF="`nc-config --flibs`" INC_NETCDF="`nf-config --includedir`" make VERBOSE=1
+
+cd ../
+```
+
+## 4. Run `interpinic`
+
+The `interpinic` can then be run via the following batch job (e.g., `remap.r025_RRSwISC6to18E3r4.1850.batch`) to generate the initial condition.
+
+```bash
+>cat remap.r025_RRSwISC6to18E3r4.1850.batch
+
+#!/bin/sh
+#SBATCH --job-name=remap
+#SBATCH --nodes=1
+#SBATCH --exclusive
+#SBATCH --time 24:00:00
+#SBATCH -p slurm
+#SBATCH --account esmd
+
+# Load relevant modules.
+cd
+eval $(./cime/CIME/Tools/get_case_env)
+
+# Change dir to `interpinic`
+cd components/elm/tools/interpinic/
+
+srun -n 1 ./interpinic \
+-i /lcrc/group/e3sm2/ac.golaz/E3SMv3/v3.LR.piControl/archive/rest/0101-01-01-00000/v3.LR.piControl.elm.r.0101-01-01-00000.nc \
+-o elmi.v3-NARRM.northamericax4v1pg2_r025_IcoswISC30E3r5.1850-01-01-00000.c20240903.nc
+```
diff --git a/components/elm/docs/user-guide/surface_dataset.md b/components/elm/docs/user-guide/surface_dataset.md
new file mode 100644
index 000000000000..5adaad100d6c
--- /dev/null
+++ b/components/elm/docs/user-guide/surface_dataset.md
@@ -0,0 +1,56 @@
+# Creating an ELM surface dataset
+
+The notes describe the steps in creating an ELM surface dataset at 0.5x0.5 resolution for 1950 on Perlmutter.
+
+## 1. Load the appropriate modules
+
+```bash
+cd
+eval $(./cime/CIME/Tools/get_case_env)
+```
+
+## 2. Compile `mksurfdata_map`
+
+```bash
+cd components/elm/tools/mksurfdata_map/src/
+
+make clean
+export USER_LDFLAGS="-L$NETCDF_DIR/lib -lnetcdf -lnetcdff -lnetcdf_intel"
+export USER_LDFLAGS=$USER_LDFLAGS" -L$HDF5_DIR/lib -lhdf5 -lhdf5_fortran -lhdf5_hl_intel -lhdf5hl_fortran_intel"
+
+USER_FC=ifort LIB_NETCDF="`nc-config --flibs`" INC_NETCDF="`nf-config --includedir`" make VERBOSE=1
+```
+
+## Build the namelist
+
+This step assumes that the resolution for which the new surface dataset is being created is a supported resolution.
+If the surface dataset is being created for an unsupported resolution, 16 mapping files will have to be created to map the raw datasets
+onto this unsupported resolution. The `namelist` file with default number of glaciers (equal to zero) can be generated as:
+
+```bash
+cd ../
+
+RES=0.5x0.5
+YR=1950
+DIN_LOC_ROOT=/global/cfs/cdirs/e3sm/inputdata
+
+./mksurfdata.pl -res $RES -years $YR -d -dinlc $DIN_LOC_ROOT
+```
+
+An example of generating the namelist for 0.25 deg (`r025`) resolution for 1980 with 10 glacier layers is as follows:
+
+```bash
+RES=r025
+YR=1980
+DIN_LOC_ROOT=/global/cfs/cdirs/e3sm/inputdata
+
+./mksurfdata.pl -res $RES -years $YR -d -dinlc $DIN_LOC_ROOT -glc_nec 10
+```
+
+## Run `mksurfdata_map` via an interactive job
+
+```bash
+salloc --nodes 1 --qos interactive --time 01:00:00 --constraint cpu --account e3sm
+
+srun -n 1 ./mksurfdata_map < namelist
+```