diff --git a/longbow/schedulers/lsf.py b/longbow/schedulers/lsf.py
index ab20689..8992636 100644
--- a/longbow/schedulers/lsf.py
+++ b/longbow/schedulers/lsf.py
@@ -98,6 +98,10 @@ def prepare(job):
 
         jobfile.write("#BSUB -m " + job["lsf-cluster"] + "\n")
 
+    if job["memory"] is not "":
+
+        jobfile.write('#BSUB -R "rusage[mem=' + job["memory"] + 'G]"\n')
+
     # Account to charge (if supplied).
     if job["account"] is not "":
 
diff --git a/longbow/schedulers/pbs.py b/longbow/schedulers/pbs.py
index 1f490a5..dd5a1e1 100644
--- a/longbow/schedulers/pbs.py
+++ b/longbow/schedulers/pbs.py
@@ -131,16 +131,13 @@ def prepare(job):
     # Number of mpi processes per node.
     mpiprocs = cpn
 
-    # Memory size (used to select nodes with minimum memory).
-    memory = job["memory"]
-
     tmp = "select=" + nodes + ":ncpus=" + ncpus + ":mpiprocs=" + mpiprocs
 
     # If user has specified memory append the flag (not all machines support
     # this).
-    if memory is not "":
+    if job["memory"] is not "":
 
-        tmp = tmp + ":mem=" + memory + "gb"
+        tmp = tmp + ":mem=" + job["memory"] + "gb"
 
     # Write the resource requests
     jobfile.write("#PBS -l " + tmp + "\n")
diff --git a/longbow/schedulers/sge.py b/longbow/schedulers/sge.py
index a249375..c1acd0f 100644
--- a/longbow/schedulers/sge.py
+++ b/longbow/schedulers/sge.py
@@ -102,6 +102,10 @@ def prepare(job):
 
     jobfile.write("#$ -l h_rt=" + job["maxtime"] + ":00\n")
 
+    if job["memory"] is not "":
+
+        jobfile.write("#$ -l h_vmem=" + job["memory"] + "G\n")
+
     # Email user.
     if job["email-address"] is not "":
 
diff --git a/longbow/schedulers/slurm.py b/longbow/schedulers/slurm.py
index 22b8661..752e83a 100644
--- a/longbow/schedulers/slurm.py
+++ b/longbow/schedulers/slurm.py
@@ -100,6 +100,10 @@ def prepare(job):
             jobfile.write("#SBATCH " + job["accountflag"] + " " +
                           job["account"] + "\n")
 
+    if job["memory"] is not "":
+
+        jobfile.write("#SBATCH --mem=" + job["memory"] + "G" + "\n")
+
     # Generic resource (if supplied)
     if job["slurm-gres"] is not "":
 
diff --git a/longbow/schedulers/soge.py b/longbow/schedulers/soge.py
index a1d0223..9217a95 100644
--- a/longbow/schedulers/soge.py
+++ b/longbow/schedulers/soge.py
@@ -103,6 +103,10 @@ def prepare(job):
 
     jobfile.write("#$ -l h_rt=" + job["maxtime"] + ":00\n")
 
+    if job["memory"] is not "":
+
+        jobfile.write("#$ -l h_vmem=" + job["memory"] + "G\n")
+
     # Email user.
     if job["email-address"] is not "":
 

memory parameter only used in PBS
Either rename this to pbs-memory to denote that it is pbs only or add support in the other schedulers.
diff --git a/tests/standards/lsf_submitfiles/case9.txt b/tests/standards/lsf_submitfiles/case9.txt
new file mode 100644
index 0000000..60275d9
--- /dev/null
+++ b/tests/standards/lsf_submitfiles/case9.txt
@@ -0,0 +1,10 @@
+#!/bin/bash --login
+#BSUB -J testjob
+#BSUB -q debug
+#BSUB -R "rusage[mem=10G]"
+#BSUB -W 24:00
+#BSUB -n 24
+
+module load amber
+
+mpiexec.hydra pmemd.MPI -O -i e.in -c e.min -p e.top -o e.out
diff --git a/tests/standards/sge_submitfiles/case8.txt b/tests/standards/sge_submitfiles/case8.txt
new file mode 100644
index 0000000..f05a1be
--- /dev/null
+++ b/tests/standards/sge_submitfiles/case8.txt
@@ -0,0 +1,9 @@
+#!/bin/bash --login
+#$ -cwd -V
+#$ -N testjob
+#$ -q debug
+#$ -l h_rt=24:00:00
+#$ -l h_vmem=10G
+module load amber
+
+mpiexec pmemd.MPI -O -i e.in -c e.min -p e.top -o e.out
diff --git a/tests/standards/slurm_submitfiles/case8.txt b/tests/standards/slurm_submitfiles/case8.txt
new file mode 100644
index 0000000..bcef936
--- /dev/null
+++ b/tests/standards/slurm_submitfiles/case8.txt
@@ -0,0 +1,15 @@
+#!/bin/bash --login
+#SBATCH -J testjob
+#SBATCH -p debug
+#SBATCH --mem=10G
+#SBATCH --gres=gpu:1
+#SBATCH -n 24
+#SBATCH -N 1
+#SBATCH -t 24:00:00
+
+ls /dir
+cd /dir
+
+module load amber
+
+mpirun pmemd.MPI -O -i e.in -c e.min -p e.top -o e.out
diff --git a/tests/standards/soge_submitfiles/case8.txt b/tests/standards/soge_submitfiles/case8.txt
new file mode 100644
index 0000000..5166c90
--- /dev/null
+++ b/tests/standards/soge_submitfiles/case8.txt
@@ -0,0 +1,12 @@
+#!/bin/bash --login
+#$ -cwd -V
+#$ -N testjob
+#$ -q debug
+#$ -l h_rt=24:00:00
+#$ -l h_vmem=10G
+#$ -l nodes=1
+#$ -pe ib 12
+
+module load amber
+
+mpiexec pmemd.MPI -O -i e.in -c e.min -p e.top -o e.out
diff --git a/tests/unit/schedulers_lsf/test_lsf_prepare.py b/tests/unit/schedulers_lsf/test_lsf_prepare.py
index 3a4d462..e22c2b9 100644
--- a/tests/unit/schedulers_lsf/test_lsf_prepare.py
+++ b/tests/unit/schedulers_lsf/test_lsf_prepare.py
@@ -55,6 +55,7 @@ def test_prepare_case1():
         "localworkdir": "/tmp",
         "lsf-cluster": "",
         "maxtime": "24:00",
+        "memory": "",
         "modules": "amber",
         "queue": "debug",
         "replicates": "1",
@@ -89,6 +90,7 @@ def test_prepare_case2():
         "localworkdir": "/tmp",
         "lsf-cluster": "",
         "maxtime": "24:00",
+        "memory": "",
         "modules": "amber",
         "queue": "debug",
         "replicates": "5",
@@ -121,6 +123,7 @@ def test_prepare_case3():
         "localworkdir": "/tmp",
         "lsf-cluster": "cluster1",
         "maxtime": "24:00",
+        "memory": "",
         "modules": "amber",
         "queue": "debug",
         "replicates": "1",
@@ -154,6 +157,7 @@ def test_prepare_case4():
         "localworkdir": "/tmp",
         "lsf-cluster": "",
         "maxtime": "24:00",
+        "memory": "",
         "modules": "amber",
         "queue": "debug",
         "replicates": "1",
@@ -187,6 +191,7 @@ def test_prepare_case5():
         "localworkdir": "/tmp",
         "lsf-cluster": "",
         "maxtime": "24:00",
+        "memory": "",
         "modules": "amber",
         "queue": "debug",
         "replicates": "1",
@@ -220,6 +225,7 @@ def test_prepare_case6():
         "localworkdir": "/tmp",
         "lsf-cluster": "",
         "maxtime": "24:00",
+        "memory": "",
         "modules": "amber",
         "queue": "debug",
         "replicates": "1",
@@ -253,6 +259,7 @@ def test_prepare_case7():
         "localworkdir": "/tmp",
         "lsf-cluster": "",
         "maxtime": "24:00",
+        "memory": "",
         "modules": "amber",
         "queue": "debug",
         "replicates": "1",
@@ -286,6 +293,7 @@ def test_prepare_case8():
         "localworkdir": "/tmp",
         "lsf-cluster": "",
         "maxtime": "24:00",
+        "memory": "",
         "modules": "amber",
         "queue": "debug",
         "replicates": "1",
@@ -299,3 +307,37 @@ def test_prepare_case8():
         os.path.join(
             os.getcwd(),
             "tests/standards/lsf_submitfiles/case8.txt"), "rb").read()
+
+
+def test_prepare_case9():
+
+    """
+    Test handler parameters
+    """
+
+    job = {
+        "account": "",
+        "accountflag": "",
+        "cores": "24",
+        "executableargs": "pmemd.MPI -O -i e.in -c e.min -p e.top -o e.out",
+        "handler": "mpiexec.hydra",
+        "email-address": "",
+        "email-flags": "",
+        "jobname": "testjob",
+        "localworkdir": "/tmp",
+        "lsf-cluster": "",
+        "maxtime": "24:00",
+        "memory": "10",
+        "modules": "amber",
+        "queue": "debug",
+        "replicates": "1",
+        "scripts": "",
+        "upload-include": "file1, file2"
+    }
+
+    prepare(job)
+
+    assert open("/tmp/submit.lsf", "rb").read() == open(
+        os.path.join(
+            os.getcwd(),
+            "tests/standards/lsf_submitfiles/case9.txt"), "rb").read()
diff --git a/tests/unit/schedulers_sge/test_sge_prepare.py b/tests/unit/schedulers_sge/test_sge_prepare.py
index f08aac8..a462308 100644
--- a/tests/unit/schedulers_sge/test_sge_prepare.py
+++ b/tests/unit/schedulers_sge/test_sge_prepare.py
@@ -295,3 +295,40 @@ def test_prepare_case7():
         os.path.join(
             os.getcwd(),
             "tests/standards/sge_submitfiles/case7.txt"), "rb").read()
+
+
+def test_prepare_case8():
+
+    """
+    Test memory param
+    """
+
+    job = {
+        "account": "",
+        "accountflag": "",
+        "cluster": "",
+        "cores": "1",
+        "corespernode": "",
+        "executableargs": "pmemd.MPI -O -i e.in -c e.min -p e.top -o e.out",
+        "handler": "mpiexec",
+        "email-address": "",
+        "email-flags": "",
+        "jobname": "testjob",
+        "localworkdir": "/tmp",
+        "maxtime": "24:00",
+        "memory": "10",
+        "modules": "amber",
+        "queue": "debug",
+        "replicates": "1",
+        "scripts": "",
+        "sge-peflag": "mpi",
+        "sge-peoverride": "false",
+        "upload-include": "file1, file2"
+    }
+
+    prepare(job)
+
+    assert open("/tmp/submit.sge", "rb").read() == open(
+        os.path.join(
+            os.getcwd(),
+            "tests/standards/sge_submitfiles/case8.txt"), "rb").read()
diff --git a/tests/unit/schedulers_slurm/test_slurm_prepare.py b/tests/unit/schedulers_slurm/test_slurm_prepare.py
index 9219865..f40bebe 100644
--- a/tests/unit/schedulers_slurm/test_slurm_prepare.py
+++ b/tests/unit/schedulers_slurm/test_slurm_prepare.py
@@ -302,3 +302,41 @@ def test_prepare_case7():
         os.path.join(
             os.getcwd(),
             "tests/standards/slurm_submitfiles/case7.txt"), "rb").read()
+
+
+def test_prepare_case8():
+
+    """
+    Test gres parameters
+    """
+
+    job = {
+        "account": "",
+        "accountflag": "",
+        "cluster": "",
+        "cores": "24",
+        "corespernode": "24",
+        "executableargs": "pmemd.MPI -O -i e.in -c e.min -p e.top -o e.out",
+        "handler": "mpirun",
+        "email-address": "",
+        "email-flags": "",
+        "jobname": "testjob",
+        "localworkdir": "/tmp",
+        "maxtime": "24:00",
+        "memory": "10",
+        "modules": "amber",
+        "queue": "debug",
+        "replicates": "1",
+        "scripts": "ls /dir, cd /dir",
+        "slurm-gres": "gpu:1",
+        "sge-peflag": "mpi",
+        "sge-peoverride": "false",
+        "upload-include": "file1, file2"
+    }
+
+    prepare(job)
+
+    assert open("/tmp/submit.slurm", "rb").read() == open(
+        os.path.join(
+            os.getcwd(),
+            "tests/standards/slurm_submitfiles/case8.txt"), "rb").read()
diff --git a/tests/unit/schedulers_soge/test_soge_prepare.py b/tests/unit/schedulers_soge/test_soge_prepare.py
index e8666c8..dbf9615 100644
--- a/tests/unit/schedulers_soge/test_soge_prepare.py
+++ b/tests/unit/schedulers_soge/test_soge_prepare.py
@@ -295,3 +295,40 @@ def test_prepare_case7():
         os.path.join(
             os.getcwd(),
             "tests/standards/soge_submitfiles/case7.txt"), "rb").read()
+
+
+def test_prepare_case8():
+
+    """
+    Test under subscription
+    """
+
+    job = {
+        "account": "",
+        "accountflag": "",
+        "cluster": "",
+        "cores": "12",
+        "corespernode": "24",
+        "executableargs": "pmemd.MPI -O -i e.in -c e.min -p e.top -o e.out",
+        "handler": "mpiexec",
+        "email-address": "",
+        "email-flags": "",
+        "jobname": "testjob",
+        "localworkdir": "/tmp",
+        "maxtime": "24:00",
+        "memory": "10",
+        "modules": "amber",
+        "queue": "debug",
+        "replicates": "1",
+        "scripts": "",
+        "sge-peflag": "mpi",
+        "sge-peoverride": "false",
+        "upload-include": "file1, file2"
+    }
+
+    prepare(job)
+
+    assert open("/tmp/submit.soge", "rb").read() == open(
+        os.path.join(
+            os.getcwd(),
+            "tests/standards/soge_submitfiles/case8.txt"), "rb").read()

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest coverage coveralls
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
charset-normalizer==2.0.12
coverage==6.2
coveralls==3.3.1
docopt==0.6.2
idna==3.10
importlib-metadata==4.8.3
iniconfig==1.1.1
-e git+https://github.com/HECBioSim/Longbow.git@585dc2198b0f3817e4822da13725489585efcf15#egg=Longbow
packaging==21.3
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
requests==2.27.1
tomli==1.2.3
typing_extensions==4.1.1
urllib3==1.26.20
zipp==3.6.0

name: Longbow
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - charset-normalizer==2.0.12
      - coverage==6.2
      - coveralls==3.3.1
      - docopt==0.6.2
      - idna==3.10
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - requests==2.27.1
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - zipp==3.6.0
prefix: /opt/conda/envs/Longbow

tests/unit/schedulers_lsf/test_lsf_prepare.py::test_prepare_case9 tests/unit/schedulers_sge/test_sge_prepare.py::test_prepare_case8 tests/unit/schedulers_slurm/test_slurm_prepare.py::test_prepare_case8 tests/unit/schedulers_soge/test_soge_prepare.py::test_prepare_case8
tests/unit/schedulers_lsf/test_lsf_prepare.py::test_prepare_case1 tests/unit/schedulers_lsf/test_lsf_prepare.py::test_prepare_case2 tests/unit/schedulers_lsf/test_lsf_prepare.py::test_prepare_case3 tests/unit/schedulers_lsf/test_lsf_prepare.py::test_prepare_case4 tests/unit/schedulers_lsf/test_lsf_prepare.py::test_prepare_case5 tests/unit/schedulers_lsf/test_lsf_prepare.py::test_prepare_case6 tests/unit/schedulers_lsf/test_lsf_prepare.py::test_prepare_case7 tests/unit/schedulers_lsf/test_lsf_prepare.py::test_prepare_case8 tests/unit/schedulers_sge/test_sge_prepare.py::test_prepare_case1 tests/unit/schedulers_sge/test_sge_prepare.py::test_prepare_case2 tests/unit/schedulers_sge/test_sge_prepare.py::test_prepare_case3 tests/unit/schedulers_sge/test_sge_prepare.py::test_prepare_case4 tests/unit/schedulers_sge/test_sge_prepare.py::test_prepare_case5 tests/unit/schedulers_sge/test_sge_prepare.py::test_prepare_case6 tests/unit/schedulers_sge/test_sge_prepare.py::test_prepare_case7 tests/unit/schedulers_slurm/test_slurm_prepare.py::test_prepare_case1 tests/unit/schedulers_slurm/test_slurm_prepare.py::test_prepare_case2 tests/unit/schedulers_slurm/test_slurm_prepare.py::test_prepare_case3 tests/unit/schedulers_slurm/test_slurm_prepare.py::test_prepare_case4 tests/unit/schedulers_slurm/test_slurm_prepare.py::test_prepare_case5 tests/unit/schedulers_slurm/test_slurm_prepare.py::test_prepare_case6 tests/unit/schedulers_slurm/test_slurm_prepare.py::test_prepare_case7 tests/unit/schedulers_soge/test_soge_prepare.py::test_prepare_case1 tests/unit/schedulers_soge/test_soge_prepare.py::test_prepare_case2 tests/unit/schedulers_soge/test_soge_prepare.py::test_prepare_case3 tests/unit/schedulers_soge/test_soge_prepare.py::test_prepare_case4 tests/unit/schedulers_soge/test_soge_prepare.py::test_prepare_case5 tests/unit/schedulers_soge/test_soge_prepare.py::test_prepare_case6 tests/unit/schedulers_soge/test_soge_prepare.py::test_prepare_case7
longbow/schedulers/sge.py longbow/schedulers/slurm.py longbow/schedulers/lsf.py longbow/schedulers/pbs.py longbow/schedulers/soge.py
longbow/schedulers/sge.py longbow/schedulers/slurm.py longbow/schedulers/lsf.py longbow/schedulers/pbs.py longbow/schedulers/soge.py