Index: /issm/trunk-jpl/test/Exp/Ais.exp
===================================================================
--- /issm/trunk-jpl/test/Exp/Ais.exp	(revision 22350)
+++ /issm/trunk-jpl/test/Exp/Ais.exp	(revision 22350)
@@ -0,0 +1,371 @@
+## Name:Antarctica
+## Icon:0
+# Points Count	Value
+366	25000.
+# X pos	Y pos
+-1016913.83085	878162.517102
+-1065362.784298	896183.164421
+-1121788.089839	882889.244268
+-1175850.031797	870777.005905
+-1240842.530326	864573.1765
+-1289586.904222	847734.210973
+-1347784.73245	830008.984101
+-1399778.731273	805193.666481
+-1457976.559501	786877.598714
+-1493427.013244	838280.756641
+-1542171.387141	859255.608439
+-1581757.727154	899728.209796
+-1624002.851198	937542.027121
+-1670088.441063	968856.594594
+-1722082.439886	981855.0943
+-1774962.700053	1003420.786994
+-1825479.596637	1024691.059239
+-1868906.402472	1054233.104025
+-1927399.651148	1063686.558357
+-1989437.945198	1079343.842093
+-2010412.796996	1125724.852407
+-2055612.125518	1149063.067788
+-2098448.090457	1183627.260187
+-2147192.464354	1195444.078101
+-2170826.100183	1240938.827071
+-2211889.542435	1275207.599023
+-2263016.65255	1280909.637672
+-2317350.604004	1293306.895593
+-2375534.184324	1279993.703486
+-2419418.410159	1314016.305538
+-2383423.483351	1367269.073967
+-2433224.683456	1375158.372994
+-2440620.901293	1426931.897855
+-2444072.469617	1482156.991041
+-2468233.447886	1532944.353524
+-2464781.879562	1584224.797197
+-2498804.481614	1541819.814929
+-2499790.643992	1483143.153419
+-2502256.049938	1428411.141423
+-2485984.370696	1381075.347263
+-2471191.935021	1325357.172889
+-2458864.905292	1273090.566838
+-2470205.772643	1221317.041976
+-2429773.115132	1188280.602303
+-2407625.063831	1139607.242244
+-2396364.68495	1083693.636763
+-2338897.923762	1058066.567585
+-2325307.811319	1007200.718155
+-2311717.698876	954005.135163
+-2260463.560519	964488.936191
+-2206879.6886	938861.867013
+-2152242.420374	914986.967648
+-2109443.190091	885575.174326
+-2108023.310413	827157.267588
+-2053256.522847	813972.670581
+-2101735.271841	786792.116752
+-2157921.939085	785372.237074
+-2199504.129645	750483.764995
+-2178611.614388	702410.695909
+-2125873.226361	700787.976277
+-2093621.673683	654743.30673
+-2078408.677136	605453.19792
+-2130944.225209	589631.681512
+-2134798.184334	539530.212887
+-2089767.714558	579489.683815
+-2040883.285656	566710.766716
+-2038652.046162	506061.620485
+-2008428.893024	553120.489801
+-2004980.613806	603424.798381
+-1959138.784214	567319.286578
+-1948996.786516	510118.419564
+-1893824.319042	516406.458136
+-1877191.442818	567522.126532
+-1824250.214837	562045.447775
+-1774757.266073	571376.085657
+-1776582.825659	516609.29809
+-1817962.176264	480909.466195
+-1858935.846962	446426.674024
+-1873540.323647	392674.086227
+-1841638.366983	347862.375138
+-1819355.95276	393260.191031
+-1781038.530172	360148.939989
+-1825811.605479	333909.835391
+-1805819.906737	274767.726613
+-1752925.203816	250611.090633
+-1780622.036448	206462.755911
+-1804986.91929	151069.090648
+-1851842.463216	130660.898182
+-1870376.433924	76933.207813
+-1900572.228899	28619.935854
+-1887244.429738	-22192.298448
+-1898281.513418	-81126.160364
+-1908902.103375	-139643.528557
+-1949926.735168	-186915.566207
+-1974262.594748	-234407.84861
+-1973612.520371	-288364.021891
+-1952810.140311	-336469.52578
+-1944359.173411	-393025.996568
+-1894953.520768	-425529.715412
+-1844897.793749	-420329.120397
+-1793541.917975	-423579.492281
+-1784440.876699	-368323.170247
+-1738935.670317	-400826.889091
+-1703831.653966	-346870.71581
+-1653125.852569	-364422.723985
+-1608270.720565	-329968.782011
+-1575952.847614	-401284.225807
+-1596047.631389	-452525.924435
+-1563561.064285	-502762.883873
+-1551839.107083	-553669.669438
+-1594038.153012	-582807.105913
+-1609818.336911	-637074.794991
+-1598286.506136	-694548.066946
+-1574241.707797	-738434.62511
+-1563195.194103	-792114.084796
+-1540274.279307	-848097.912086
+-1518570.404234	-916860.656475
+-1496258.0093	-974264.363443
+-1462586.576944	-1028625.471102
+-1472728.574641	-1086840.537885
+-1407819.789377	-1071424.701385
+-1355689.921212	-1064528.142951
+-1310659.451435	-1090694.49701
+-1279016.418619	-1134710.767018
+-1228306.430131	-1167976.519465
+-1175568.042104	-1200836.592005
+-1125170.672365	-1198245.774992
+-1078002.024254	-1216252.428506
+-1027089.195813	-1229234.185558
+-980030.326496	-1250938.060631
+-942099.255108	-1288666.292066
+-898082.985101	-1317875.245435
+-843316.197534	-1308341.767599
+-783478.411119	-1288057.772204
+-733985.462355	-1278321.454414
+-694228.831381	-1240593.22298
+-641287.6034	-1226800.106111
+-611470.130169	-1271627.735934
+-557311.862464	-1289274.811928
+-504979.154345	-1267165.256947
+-457311.765167	-1221729.107262
+-408427.336265	-1207935.990394
+-349198.069712	-1191505.954124
+-298285.24127	-1209153.030117
+-243721.293658	-1227002.946065
+-189157.346045	-1245461.381874
+-122828.681103	-1260268.698513
+-69481.773214	-1287043.572434
+-29522.302286	-1318483.765296
+28287.08459	-1324568.963915
+80619.792709	-1333291.081935
+133763.860644	-1348504.078481
+200701.045447	-1351546.67779
+264189.951034	-1347084.198803
+313682.899797	-1360471.635764
+308003.381087	-1310370.167138
+335792.454778	-1264528.337546
+381025.764509	-1297388.410086
+406786.43866	-1345461.479172
+436198.231983	-1395765.787751
+462364.586043	-1448301.335825
+462161.746089	-1508747.642102
+402932.479535	-1523352.118786
+451411.228529	-1541607.714642
+456685.067332	-1603879.580504
+439849.351154	-1653981.04913
+416522.75645	-1700228.558631
+408206.318338	-1750330.027256
+357902.009758	-1759863.505092
+341877.653396	-1807328.054316
+323216.377633	-1864123.241422
+345123.09266	-1917875.829219
+316725.499107	-1967774.457891
+344717.412752	-2020512.845918
+397658.640733	-2013007.767622
+441674.91074	-2041202.521221
+487313.900379	-2062095.036478
+545123.287254	-2055401.317997
+597861.675281	-2054792.798135
+654454.022434	-2061283.676662
+714900.328711	-2056212.677813
+755468.319501	-2094143.749202
+808815.22739	-2120310.103261
+861350.775463	-2112196.505103
+915103.363259	-2114427.744597
+972101.390319	-2106314.146439
+1013683.580879	-2137145.819439
+1064596.409321	-2123758.382478
+1114292.198038	-2099011.908096
+1160742.547493	-2077713.712932
+1212263.895796	-2050330.319148
+1262771.04433	-2018687.286332
+1317537.831896	-2030046.323753
+1381229.577437	-2045665.000208
+1441675.883714	-2064123.436017
+1490357.472662	-2041405.361175
+1531331.14336	-2012196.407806
+1590966.089821	-1998403.290937
+1637822.119184	-1970817.0572
+1689951.987349	-1951141.581667
+1739242.096159	-1925178.067561
+1785286.765705	-1898403.19364
+1838633.673594	-1873859.559212
+1883055.623509	-1848301.725014
+1918552.615451	-1807125.214362
+1946950.209004	-1751547.06698
+1989343.759379	-1715847.235085
+1996240.317814	-1658240.688163
+1968248.404168	-1606110.819998
+1994820.438136	-1554995.151602
+2045124.746716	-1561891.710037
+2105571.052993	-1552561.072155
+2117741.45023	-1503473.803299
+2137214.085809	-1452763.814811
+2146139.043783	-1394345.908074
+2193400.753053	-1363717.075027
+2187924.074296	-1307327.567829
+2205368.310336	-1251140.900585
+2231940.344304	-1201242.271913
+2272508.335094	-1158443.04163
+2318147.324732	-1134102.247156
+2351210.237226	-1084000.77853
+2404759.985069	-1078929.779681
+2448167.735214	-1052560.585668
+2462163.692037	-985014.881002
+2453644.413971	-927814.013989
+2413482.103089	-889071.582784
+2404557.145115	-835116.155033
+2452224.534293	-799010.64323
+2483664.727156	-746880.775065
+2516524.799696	-705501.424459
+2544719.553295	-660470.954682
+2597863.62123	-651140.316801
+2649384.969533	-620105.803846
+2599486.340861	-601241.688129
+2613482.297684	-548097.620194
+2664597.966079	-515846.067516
+2634171.972987	-469801.397969
+2652630.408796	-420916.969067
+2652021.888934	-367367.221224
+2709425.595902	-351951.384724
+2742894.188304	-309354.994395
+2714496.594751	-262904.64494
+2655064.488244	-255805.246552
+2608005.618927	-233898.531525
+2569871.707584	-199821.419262
+2574896.697294	-146121.254432
+2586855.25443	-86328.468753
+2567450.803229	-29694.547224
+2550302.683562	17688.415012
+2572189.099452	68004.608244
+2590465.384886	115161.937327
+2603326.474636	173149.657778
+2578958.094057	219404.454246
+2547369.452567	268141.215403
+2496376.359874	290027.631293
+2476746.27552	348240.984898
+2425527.549674	370804.300248
+2387846.813039	414802.765182
+2357611.970469	456319.265427
+2305039.445702	469180.355176
+2256528.317698	484072.143308
+2210724.787537	524234.844632
+2168305.754678	565074.445416
+2140101.61049	607267.845122
+2188161.472186	621257.100639
+2223585.877287	657809.671507
+2239831.464339	714669.22619
+2218170.681603	765887.952036
+2240282.730646	822973.139872
+2259010.282387	899011.512604
+2254948.885624	949102.072682
+2236898.233344	998515.733299
+2222908.977826	1063046.815202
+2203955.792932	1119003.837271
+2174849.11613	1169545.663656
+2167854.488371	1220087.490042
+2144388.640406	1268372.984892
+2139199.077876	1323653.1075
+2119343.360367	1377353.798035
+2169208.287292	1392922.485627
+2168531.387831	1451587.105538
+2179136.146046	1515215.654826
+2153413.966547	1559665.386067
+2116861.395679	1596443.590088
+2060540.583216	1638517.083388
+2005773.795649	1661843.678093
+1972305.203247	1616610.368362
+1923826.454253	1651093.160533
+1872710.785858	1633243.244586
+1825246.236634	1670971.47602
+1811655.959719	1723912.704001
+1754252.252751	1708496.867501
+1705570.663803	1733243.341883
+1651818.076006	1760221.055758
+1596848.448486	1759206.855989
+1549383.899261	1775028.372397
+1496036.991373	1783547.650463
+1458917.2798	1748659.178383
+1409627.17099	1725738.263587
+1365408.061029	1754338.697094
+1343298.506048	1778679.491568
+1346746.785265	1834257.63895
+1325854.270008	1880302.308497
+1320783.27116	1934460.576202
+1270884.642488	1962249.649893
+1215712.175014	1941357.134636
+1175347.024177	1976854.126577
+1123217.156012	1975839.926807
+1074941.246972	1947442.333254
+1017740.379958	1947036.653346
+961148.032806	1957178.651044
+916117.563029	1984967.724735
+862567.815186	1997340.961926
+806786.82785	2020667.55663
+785082.952777	2073000.264749
+731938.884842	2077259.903782
+682648.776033	2116610.854849
+630518.907867	2135880.650474
+576969.160025	2169349.242876
+522810.89232	2162047.004534
+480011.662036	2133649.410981
+431532.913042	2152919.206606
+380620.084601	2167118.003382
+327273.176712	2183142.359744
+283662.586613	2155961.805915
+228084.43923	2183142.359744
+170477.892309	2164481.083981
+114696.904972	2176854.321172
+63175.556669	2197746.836429
+13276.927997	2183750.879606
+3743.450162	2239734.706896
+-45343.818694	2226144.429982
+-76175.491695	2172797.522093
+-124654.240689	2147848.207757
+-182666.467519	2145414.12831
+-237027.575177	2127361.372408
+-282058.044954	2100383.658533
+-333376.553304	2102614.898026
+-365628.105982	2058801.467973
+-409441.536035	2019856.196815
+-426885.772075	1971377.44782
+-449401.006963	1915799.300438
+-505181.994299	1889835.786333
+-538650.586701	1852513.234806
+-577393.017906	1815596.363187
+-623640.527406	1789835.689035
+-632565.48538	1739328.540502
+-632971.165288	1679896.433994
+-648792.681696	1619855.807625
+-696865.750782	1599774.652184
+-745953.019638	1579693.496743
+-721206.545256	1528983.508255
+-696865.750782	1481924.638939
+-703762.309216	1423303.892247
+-682058.434144	1365494.505371
+-705587.868802	1319449.835825
+-726277.544105	1270768.246877
+-741287.700697	1221680.978021
+-760557.496322	1169956.789764
+-768468.254527	1118638.281414
+-757312.057059	1062654.454124
+-782261.371395	1017015.464485
+-841490.637949	989226.390794
+-880435.909107	947644.200234
+-1016913.83085	878162.517102
Index: /issm/trunk-jpl/test/NightlyRun/test2110.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test2110.m	(revision 22349)
+++ /issm/trunk-jpl/test/NightlyRun/test2110.m	(revision 22350)
@@ -49,5 +49,5 @@
 
 % solve esa 
-md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion',...
+md.esa.requested_outputs = {'EsaUmotion','EsaXmotion','EsaYmotion',...
 	'EsaStrainratexx','EsaStrainratexy','EsaStrainrateyy','EsaRotationrate'};
 md.cluster=generic('name',oshostname(),'np',3); 
@@ -56,11 +56,11 @@
 
 %Fields and tolerances to track changes
-field_names     ={'EsaUmotion','EsaNmotion','EsaEmotion',...
+field_names     ={'EsaUmotion','EsaXmotion','EsaYmotion',...
 	'EsaStrainratexx','EsaStrainratexy','EsaStrainrateyy','EsaRotationrate'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
 field_values={...
 	(md.results.EsaSolution.EsaUmotion),...
-	(md.results.EsaSolution.EsaNmotion),...
-	(md.results.EsaSolution.EsaEmotion),...
+	(md.results.EsaSolution.EsaXmotion),...
+	(md.results.EsaSolution.EsaYmotion),...
 	(md.results.EsaSolution.EsaStrainratexx),...
 	(md.results.EsaSolution.EsaStrainratexy),...
Index: /issm/trunk-jpl/test/NightlyRun/test2110.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test2110.py	(revision 22349)
+++ /issm/trunk-jpl/test/NightlyRun/test2110.py	(revision 22350)
@@ -61,5 +61,5 @@
 
 #solve esa 
-md.esa.requested_outputs = ['EsaUmotion','EsaNmotion','EsaEmotion',
+md.esa.requested_outputs = ['EsaUmotion','EsaXmotion','EsaYmotion',
 	'EsaStrainratexx','EsaStrainratexy','EsaStrainrateyy','EsaRotationrate']
 md.cluster = generic('name',gethostname(),'np',3)
@@ -68,11 +68,11 @@
 
 #Fields and tolerances to track changes
-field_names     = ['EsaUmotion','EsaNmotion','EsaEmotion',
+field_names     = ['EsaUmotion','EsaXmotion','EsaYmotion',
 	'EsaStrainratexx','EsaStrainratexy','EsaStrainrateyy','EsaRotationrate']
 field_tolerances = [1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
 field_values = [
 	md.results.EsaSolution.EsaUmotion,
-	md.results.EsaSolution.EsaNmotion,
-	md.results.EsaSolution.EsaEmotion,
+	md.results.EsaSolution.EsaXmotion,
+	md.results.EsaSolution.EsaYmotion,
 	md.results.EsaSolution.EsaStrainratexx,
 	md.results.EsaSolution.EsaStrainratexy,
Index: /issm/trunk-jpl/test/NightlyRun/test2111.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test2111.m	(revision 22350)
+++ /issm/trunk-jpl/test/NightlyRun/test2111.m	(revision 22350)
@@ -0,0 +1,66 @@
+%Test Name: Esa2Dsurface
+%AIS -- southern hemisphere example for north-south, east-west components of horiz motion 
+
+%mesh ais: {{{
+	md=model();
+	md=triangle(md,'../Exp/Ais.exp',200000); % max element size
+% }}}
+%define load: {{{
+	md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
+	disc_radius=500; % km
+	index=md.mesh.elements;
+	x_element=mean(md.mesh.x(index),2)-1.0e6;
+	y_element=mean(md.mesh.y(index),2)-1.0e6;
+	rad_dist=sqrt(x_element.^2+y_element.^2)/1000;  % radial distance in km
+	md.esa.deltathickness(rad_dist<=disc_radius)=-1;   % 1 m water withdrawl
+% }}}
+%read in love numbers:{{{
+	nlov=10001;	% horizontal displacements do not work for low degree truncation, e.g., 101
+	md.esa.love_h = love_numbers('h','CF'); md.esa.love_h(nlov+1:end)=[];
+	md.esa.love_l = love_numbers('l','CF'); md.esa.love_l(nlov+1:end)=[];
+% }}}
+%mask:  {{{
+	%make sure wherever there is an ice load, that the mask is set to ice: 
+	md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+	pos=find(md.esa.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+	%is ice grounded? 
+	md.mask.groundedice_levelset=-ones(md.mesh.numberofvertices,1);
+	pos=find(md.mask.ice_levelset<=0); md.mask.groundedice_levelset(pos)=1; 
+% }}}
+%geometry:  {{{
+	di=md.materials.rho_ice/md.materials.rho_water;
+	md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.surface-md.geometry.thickness;
+	md.geometry.bed=md.geometry.base;
+% }}}
+%materials:  {{{
+	md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+% }}}
+%additional parameters, miscellaneous: {{{
+	md.miscellaneous.name='test2111';
+	md.esa.degacc=0.01;
+	md.esa.hemisphere = -1; 
+% }}}
+
+%solve esa: {{{
+md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'}; 
+md.cluster=generic('name',oshostname(),'np',3); 
+md.verbose=verbose('111111111');
+md=solve(md,'Esa');
+% }}}
+%fields and tolerances to track changes {{{
+field_names     ={'EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'}; 
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.EsaSolution.EsaUmotion),...
+	(md.results.EsaSolution.EsaNmotion),...
+	(md.results.EsaSolution.EsaEmotion),...
+	(md.results.EsaSolution.EsaXmotion),...
+	(md.results.EsaSolution.EsaYmotion),...
+	};
+% }}} 
+
Index: /issm/trunk-jpl/test/NightlyRun/test2111.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test2111.py	(revision 22350)
+++ /issm/trunk-jpl/test/NightlyRun/test2111.py	(revision 22350)
@@ -0,0 +1,78 @@
+#Test Name: Esa2Dsurface
+#AIS -- southern hemisphere example for north-south, east-west components of horiz motion 
+
+import numpy as np
+from model import *
+from socket import gethostname
+from solve import *
+from roundmesh import *
+from love_numbers import *
+from paterson import *
+
+#mesh ais: {{{
+md = model()
+md = triangle(md,'../Exp/Ais.exp',200000); # max element size
+# }}}
+#define load: {{{
+md.esa.deltathickness = np.zeros((md.mesh.numberofelements,))
+disc_radius = 500 # km
+index = md.mesh.elements
+x_element = np.mean(md.mesh.x[index - 1], 1) - 1.0e6
+y_element = np.mean(md.mesh.y[index - 1], 1) - 1.0e6
+rad_dist = np.sqrt(x_element**2 + y_element**2) / 1000  # radial distance in km
+md.esa.deltathickness[np.where(rad_dist <= disc_radius)] = -1   # 1 m water withdrawl
+# }}}
+#love numbers: {{{
+nlov = 10000	# horizontal displacements do not work for low degree truncation, e.g., 101
+md.esa.love_h = np.array(love_numbers('h','CF'))
+md.esa.love_h = np.resize(md.esa.love_h, nlov + 1)
+md.esa.love_l = np.array(love_numbers('l','CF'))
+md.esa.love_l = np.resize(md.esa.love_l, nlov + 1)
+# }}}
+#mask:  {{{
+#make sure wherever there is an ice load, that the mask is set to ice: 
+md.mask.ice_levelset = np.ones((md.mesh.numberofvertices,))
+pos = np.where(md.esa.deltathickness)
+md.mask.ice_levelset[md.mesh.elements[pos,:]] = -1
+
+#is ice grounded? 
+md.mask.groundedice_levelset = -np.ones((md.mesh.numberofvertices,))
+pos = np.where(md.mask.ice_levelset <= 0)
+md.mask.groundedice_levelset[pos] = 1
+# }}}
+#geometry:  {{{
+di = md.materials.rho_ice / md.materials.rho_water
+md.geometry.thickness = np.ones((md.mesh.numberofvertices,))
+md.geometry.surface = (1 - di) * np.zeros((md.mesh.numberofvertices,))
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+md.geometry.bed = md.geometry.base
+# }}}
+#materials:  {{{
+md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices,))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements,))
+# }}}
+#additional parameters, miscellaneous: {{{
+md.miscellaneous.name='test2111';
+md.esa.degacc=0.01;
+md.esa.hemisphere = -1; 
+# }}}
+
+#solve esa: {{{
+md.esa.requested_outputs = ['EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'] 
+md.cluster = generic('name',gethostname(),'np',3)
+md.verbose = verbose('111111111')
+md = solve(md,'Esa')
+# }}}
+#Fields and tolerances to track changes: {{{
+field_names     = ['EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion']
+field_tolerances = [1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values = [
+	md.results.EsaSolution.EsaUmotion,
+	md.results.EsaSolution.EsaNmotion,
+	md.results.EsaSolution.EsaEmotion,
+	md.results.EsaSolution.EsaXmotion,
+	md.results.EsaSolution.EsaYmotion,
+	]
+# }}}
+
Index: /issm/trunk-jpl/test/NightlyRun/test2112.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test2112.m	(revision 22350)
+++ /issm/trunk-jpl/test/NightlyRun/test2112.m	(revision 22350)
@@ -0,0 +1,66 @@
+%Test Name: Esa2Dsurface
+%AIS 2 -- load centered at the south pole! 
+
+%mesh ais: {{{
+	md=model();
+	md=triangle(md,'../Exp/Ais.exp',100000); % max element size
+% }}}
+%define load: {{{
+	md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
+	disc_radius=500; % km
+	index=md.mesh.elements;
+	x_element=mean(md.mesh.x(index),2); 
+	y_element=mean(md.mesh.y(index),2); 
+	rad_dist=sqrt(x_element.^2+y_element.^2)/1000;  % radial distance in km
+	md.esa.deltathickness(rad_dist<=disc_radius)=-1;   % 1 m water withdrawl
+% }}}
+%read in love numbers:{{{
+	nlov=10001;	% horizontal displacements do not work for low degree truncation, e.g., 101
+	md.esa.love_h = love_numbers('h','CF'); md.esa.love_h(nlov+1:end)=[];
+	md.esa.love_l = love_numbers('l','CF'); md.esa.love_l(nlov+1:end)=[];
+% }}}
+%mask:  {{{
+	%make sure wherever there is an ice load, that the mask is set to ice: 
+	md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+	pos=find(md.esa.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+	%is ice grounded? 
+	md.mask.groundedice_levelset=-ones(md.mesh.numberofvertices,1);
+	pos=find(md.mask.ice_levelset<=0); md.mask.groundedice_levelset(pos)=1; 
+% }}}
+%geometry:  {{{
+	di=md.materials.rho_ice/md.materials.rho_water;
+	md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.surface-md.geometry.thickness;
+	md.geometry.bed=md.geometry.base;
+% }}}
+%materials:  {{{
+	md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+% }}}
+%additional parameters, miscellaneous: {{{
+	md.miscellaneous.name='test2112';
+	md.esa.degacc=0.01;
+	md.esa.hemisphere = -1; 
+% }}}
+
+%solve esa: {{{
+md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'}; 
+md.cluster=generic('name',oshostname(),'np',3); 
+md.verbose=verbose('111111111');
+md=solve(md,'Esa');
+% }}}
+%fields and tolerances to track changes {{{
+field_names     ={'EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'}; 
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.EsaSolution.EsaUmotion),...
+	(md.results.EsaSolution.EsaNmotion),...
+	(md.results.EsaSolution.EsaEmotion),...
+	(md.results.EsaSolution.EsaXmotion),...
+	(md.results.EsaSolution.EsaYmotion),...
+	};
+% }}} 
+
Index: /issm/trunk-jpl/test/NightlyRun/test2112.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test2112.py	(revision 22350)
+++ /issm/trunk-jpl/test/NightlyRun/test2112.py	(revision 22350)
@@ -0,0 +1,78 @@
+#Test Name: Esa2Dsurface
+#AIS 2 -- load centered at the south pole! 
+
+import numpy as np
+from model import *
+from socket import gethostname
+from solve import *
+from roundmesh import *
+from love_numbers import *
+from paterson import *
+
+#mesh ais: {{{
+md = model()
+md = triangle(md,'../Exp/Ais.exp',100000); # max element size
+# }}}
+#define load: {{{
+md.esa.deltathickness = np.zeros((md.mesh.numberofelements,))
+disc_radius = 500 # km
+index = md.mesh.elements
+x_element = np.mean(md.mesh.x[index - 1], 1)
+y_element = np.mean(md.mesh.y[index - 1], 1)
+rad_dist = np.sqrt(x_element**2 + y_element**2) / 1000  # radial distance in km
+md.esa.deltathickness[np.where(rad_dist <= disc_radius)] = -1   # 1 m water withdrawl
+# }}}
+#love numbers: {{{
+nlov = 10000	# horizontal displacements do not work for low degree truncation, e.g., 101
+md.esa.love_h = np.array(love_numbers('h','CF'))
+md.esa.love_h = np.resize(md.esa.love_h, nlov + 1)
+md.esa.love_l = np.array(love_numbers('l','CF'))
+md.esa.love_l = np.resize(md.esa.love_l, nlov + 1)
+# }}}
+#mask:  {{{
+#make sure wherever there is an ice load, that the mask is set to ice: 
+md.mask.ice_levelset = np.ones((md.mesh.numberofvertices,))
+pos = np.where(md.esa.deltathickness)
+md.mask.ice_levelset[md.mesh.elements[pos,:]] = -1
+
+#is ice grounded? 
+md.mask.groundedice_levelset = -np.ones((md.mesh.numberofvertices,))
+pos = np.where(md.mask.ice_levelset <= 0)
+md.mask.groundedice_levelset[pos] = 1
+# }}}
+#geometry:  {{{
+di = md.materials.rho_ice / md.materials.rho_water
+md.geometry.thickness = np.ones((md.mesh.numberofvertices,))
+md.geometry.surface = (1 - di) * np.zeros((md.mesh.numberofvertices,))
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+md.geometry.bed = md.geometry.base
+# }}}
+#materials:  {{{
+md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices,))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements,))
+# }}}
+#additional parameters, miscellaneous: {{{
+md.miscellaneous.name='test2112';
+md.esa.degacc=0.01;
+md.esa.hemisphere = -1; 
+# }}}
+
+#solve esa: {{{
+md.esa.requested_outputs = ['EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'] 
+md.cluster = generic('name',gethostname(),'np',3)
+md.verbose = verbose('111111111')
+md = solve(md,'Esa')
+# }}}
+#Fields and tolerances to track changes: {{{
+field_names     = ['EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion']
+field_tolerances = [1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values = [
+	md.results.EsaSolution.EsaUmotion,
+	md.results.EsaSolution.EsaNmotion,
+	md.results.EsaSolution.EsaEmotion,
+	md.results.EsaSolution.EsaXmotion,
+	md.results.EsaSolution.EsaYmotion,
+	]
+# }}}
+
Index: /issm/trunk-jpl/test/NightlyRun/test2113.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test2113.m	(revision 22350)
+++ /issm/trunk-jpl/test/NightlyRun/test2113.m	(revision 22350)
@@ -0,0 +1,65 @@
+%Test Name: Esa2Dsurface
+%Northern hemisphere example for north-south, east-west components of horiz motion 
+%Same as test2111.m except that AIS is assumed to have located in Northern Hemisphere 
+
+%mesh ais: {{{
+	md=model();
+	md=triangle(md,'../Exp/Ais.exp',200000); % max element size
+% }}}
+%define load: {{{
+	md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
+	disc_radius=500; % km
+	index=md.mesh.elements;
+	x_element=mean(md.mesh.x(index),2)-1.0e6;
+	y_element=mean(md.mesh.y(index),2)+1.0e6;
+	rad_dist=sqrt(x_element.^2+y_element.^2)/1000;  % radial distance in km
+	md.esa.deltathickness(rad_dist<=disc_radius)=-1;   % 1 m water withdrawl
+% }}}
+%read in love numbers:{{{
+	nlov=10001;	% horizontal displacements do not work for low degree truncation, e.g., 101
+	md.esa.love_h = love_numbers('h','CF'); md.esa.love_h(nlov+1:end)=[];
+	md.esa.love_l = love_numbers('l','CF'); md.esa.love_l(nlov+1:end)=[];
+% }}}
+%mask:  {{{
+	%make sure wherever there is an ice load, that the mask is set to ice: 
+	md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+	pos=find(md.esa.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+	%is ice grounded? 
+	md.mask.groundedice_levelset=-ones(md.mesh.numberofvertices,1);
+	pos=find(md.mask.ice_levelset<=0); md.mask.groundedice_levelset(pos)=1; 
+% }}}
+%geometry:  {{{
+	di=md.materials.rho_ice/md.materials.rho_water;
+	md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.surface-md.geometry.thickness;
+	md.geometry.bed=md.geometry.base;
+% }}}
+%materials:  {{{
+	md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+% }}}
+%additional parameters, miscellaneous: {{{
+	md.miscellaneous.name='test2113';
+	md.esa.degacc=0.01;
+	md.esa.hemisphere = 1; % AIS is placed in Northern Hemisphere 
+% }}}
+
+%solve esa: {{{
+md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion'}; 
+md.cluster=generic('name',oshostname(),'np',3); 
+md.verbose=verbose('111111111');
+md=solve(md,'Esa');
+% }}}
+%fields and tolerances to track changes {{{
+field_names     ={'EsaUmotion','EsaNmotion','EsaEmotion'}; 
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.EsaSolution.EsaUmotion),...
+	(md.results.EsaSolution.EsaNmotion),...
+	(md.results.EsaSolution.EsaEmotion),...
+	};
+% }}} 
+
Index: /issm/trunk-jpl/test/NightlyRun/test2113.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test2113.py	(revision 22350)
+++ /issm/trunk-jpl/test/NightlyRun/test2113.py	(revision 22350)
@@ -0,0 +1,77 @@
+#Test Name: Esa2Dsurface
+#Northern hemisphere example for north-south, east-west components of horiz motion 
+#Same as test2111.m except that AIS is assumed to have located in Northern Hemisphere 
+
+import numpy as np
+from model import *
+from socket import gethostname
+from solve import *
+from roundmesh import *
+from love_numbers import *
+from paterson import *
+
+#mesh ais: {{{
+md = model()
+md = triangle(md,'../Exp/Ais.exp',200000); # max element size
+# }}}
+#define load: {{{
+md.esa.deltathickness = np.zeros((md.mesh.numberofelements,))
+disc_radius = 500 # km
+index = md.mesh.elements
+x_element = np.mean(md.mesh.x[index - 1], 1) - 1.0e6
+y_element = np.mean(md.mesh.y[index - 1], 1) - 1.0e6
+rad_dist = np.sqrt(x_element**2 + y_element**2) / 1000  # radial distance in km
+md.esa.deltathickness[np.where(rad_dist <= disc_radius)] = -1   # 1 m water withdrawl
+# }}}
+#love numbers: {{{
+nlov = 10000	# horizontal displacements do not work for low degree truncation, e.g., 101
+md.esa.love_h = np.array(love_numbers('h','CF'))
+md.esa.love_h = np.resize(md.esa.love_h, nlov + 1)
+md.esa.love_l = np.array(love_numbers('l','CF'))
+md.esa.love_l = np.resize(md.esa.love_l, nlov + 1)
+# }}}
+#mask:  {{{
+#make sure wherever there is an ice load, that the mask is set to ice: 
+md.mask.ice_levelset = np.ones((md.mesh.numberofvertices,))
+pos = np.where(md.esa.deltathickness)
+md.mask.ice_levelset[md.mesh.elements[pos,:]] = -1
+
+#is ice grounded? 
+md.mask.groundedice_levelset = -np.ones((md.mesh.numberofvertices,))
+pos = np.where(md.mask.ice_levelset <= 0)
+md.mask.groundedice_levelset[pos] = 1
+# }}}
+#geometry:  {{{
+di = md.materials.rho_ice / md.materials.rho_water
+md.geometry.thickness = np.ones((md.mesh.numberofvertices,))
+md.geometry.surface = (1 - di) * np.zeros((md.mesh.numberofvertices,))
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+md.geometry.bed = md.geometry.base
+# }}}
+#materials:  {{{
+md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices,))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements,))
+# }}}
+#additional parameters, miscellaneous: {{{
+md.miscellaneous.name='test2113';
+md.esa.degacc=0.01;
+md.esa.hemisphere = 1; # AIS is placed in Northern Hemisphere 
+# }}}
+
+#solve esa: {{{
+md.esa.requested_outputs = ['EsaUmotion','EsaNmotion','EsaEmotion']
+md.cluster = generic('name',gethostname(),'np',3)
+md.verbose = verbose('111111111')
+md = solve(md,'Esa')
+# }}}
+#Fields and tolerances to track changes: {{{
+field_names     = ['EsaUmotion','EsaNmotion','EsaEmotion']
+field_tolerances = [1e-13,1e-13,1e-13]
+field_values = [
+	md.results.EsaSolution.EsaUmotion,
+	md.results.EsaSolution.EsaNmotion,
+	md.results.EsaSolution.EsaEmotion,
+	]
+# }}}
+
