diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml
index 6378596797..348bc96134 100644
--- a/src/core_atmosphere/Registry.xml
+++ b/src/core_atmosphere/Registry.xml
@@ -2212,7 +2212,7 @@
+ possible_values="`suite',`sf_monin_obukhov',`sf_mynn',`sf_pxsfclay',`off'"/>
1
+ REGIME(I) = 1.0
+ ZOLL = BR(I) * GZ1OZ0(I) / (1.0 - RICRITI * RICUT(I))
+ PSIM(I) = 1.0 - BETAM - ZOLL
+ PSIH(I) = 1.0 - BETAH - ZOLL
+
+ ELSE IF (BR(I) .GE. 0.0) THEN
+! -----CLASS 2; STABLE: for 1 > Z/L >0
+ REGIME(I) = 2.0
+ ZOLL = BR(I) * GZ1OZ0(I) / (1.0 - RICRITI * BR(I))
+ PSIM(I) = -BETAM * ZOLL
+ PSIH(I) = -BETAH * ZOLL
+
+ ELSE
+! ----- CLASS 3 or 4; UNSTABLE:
+! ----- CLASS 4 IS FOR ACM NON-LOCAL CONVECTION (H/L < -3)
+ REGIME(I) = 3.0
+ AM = 0.031 + 0.276 * ALOG(GZ1OZ0(I))
+ AH = 0.04 + 0.355 * ALOG(GZ1OZ0(I))
+ SQLNZZ0 = SQRT(GZ1OZ0(I))
+ PSIM(I) = AM * ALOG(1.0 - BM * SQLNZZ0 * BR(I))
+ PSIH(I) = AH * ALOG(1.0 - BH * SQLNZZ0 * BR(I))
+
+ ENDIF
+ ENDDO
+
+! -------- COMPUTE THE FRICTIONAL VELOCITY AND SURFACE FLUXES:
+ DO I = its,ite
+ DTG = THETA1(I) - THETAG(I)
+ PSIX = GZ1OZ0(I) - PSIM(I)
+ UST(I) = 0.5*UST(I)+0.5*KARMAN*WSPD(I)/PSIX
+ USTM(I) = UST(I)
+
+! ------- OVER WATER, ALTER ROUGHNESS LENGTH (Z0) ACCORDING TO WIND (UST).
+ IF ((XLAND(I)-1.5) .GE. 0.0) THEN
+ ZNT(I) = CZO * USTM(I) * USTM(I) / G + OZO
+ GZ1OZ0(I) = ALOG(ZA(I) / ZNT(I))
+ PSIX = GZ1OZ0(I) - PSIM(I)
+ UST(I) = KARMAN * WSPD(I) / PSIX
+ USTM(I) = UST(I)
+ ENDIF
+
+ RA(I) = PR0 * (GZ1OZ0(I) - PSIH(I)) / (KARMAN * UST(I))
+ RBH = 5.0 / UST(I)
+ RBW = 4.503/UST(I)
+ CHS(I) = 1./(RA(I) + RBH)
+ CQS = 1./(RA(I) + RBW)
+ MOL(I) = DTG * CHS(I) / UST(I)
+ TSTV = (THETAV1(I) - TH0(I)) * CHS(I) / UST(I)
+ IF (ABS(TSTV) .LT. 1.E-5) TSTV = 1.E-5
+ MOLENGTH(I) = THETAV1(I) * UST(I) * UST(I) / (KARMAN * G * TSTV)
+
+! ---Compute 2m surface exchange coefficients for heat and moisture
+ XMOL = MOLENGTH(I)
+ IF(MOLENGTH(I).GT.0.0) XMOL = AMAX1(MOLENGTH(I),2.0)
+ RMOL(I) = 1/XMOL
+ ZOL(I) = ZA(I)*RMOL(I)
+ ZOBOL = 1.5*RMOL(I)
+ Z10OL = 10.0*RMOL(I)
+ ZNTOL = ZNT(I)*RMOL(I)
+ IF(XMOL.LT.0.0) THEN
+ YNT = ( 1.0 - GAMAH * ZNTOL )**0.5
+ YOB = ( 1.0 - GAMAH * ZOBOL )**0.5
+ PSIH2 = 2. * ALOG((YOB+1.0)/(YNT+1.0))
+ x1 = (1.0 - gamam * z10ol)**0.25
+ x2 = (1.0 - gamam * zntol)**0.25
+ psim10 = 2.0 * ALOG( (1.0+x1) / (1.0+x2) ) + &
+ ALOG( (1.0+x1*x1) / (1.0+x2*x2)) - &
+ 2.0 * ATAN(x1) + 2.0 * ATAN(x2)
+ ELSE
+ IF((ZOBOL-ZNTOL).LE.1.0) THEN
+ PSIH2 = -BETAH*(ZOBOL-ZNTOL)
+ ELSE
+ PSIH2 = 1.-BETAH-(ZOBOL-ZNTOL)
+ ENDIF
+ IF((Z10OL-ZNTOL).LE.1.0) THEN
+ PSIM10 = -BETAM*(Z10OL-ZNTOL)
+ ELSE
+ PSIM10 = 1.-BETAM-(Z10OL-ZNTOL)
+ ENDIF
+ ENDIF
+ G2OZ0 = ALOG(1.5 / ZNT(I))
+ G10OZ0 = ALOG(10.0 / ZNT(I))
+ RA2 = PR0 * (G2OZ0 - PSIH2) / (KARMAN * UST(I))
+ CHS2(I) = 1.0/(RA2 + RBH)
+ CQS2(I) = 1.0/(RA2 + RBW)
+ U10(I) = US(I)*(G10OZ0-PSIM10)/PSIX
+ V10(I) = VS(I)*(G10OZ0-PSIM10)/PSIX
+
+! -----COMPUTE SURFACE HEAT AND MOIST FLUX:
+ FLHC(i) = CPM(I)*RHOX(I)*CHS(I)
+#if defined(mpas)
+ FLQC(i) = RHOX(I)*CQS
+#else
+ FLQC(i) = RHOX(I)*CQS*MAVAIL(I)
+#endif
+ QFX(I) = FLQC(I)*(QSFC(I)-QV1D(I))
+ QFX(I) = AMAX1(QFX(I),0.)
+ LH(I) = XLV*QFX(I)
+ IF(XLAND(I)-1.5.GT.0.)THEN
+ HFX(I)= -FLHC(I)*DTG
+ ELSEIF(XLAND(I)-1.5.LT.0.)THEN
+ HFX(I)= -FLHC(I)*DTG
+ HFX(I)= AMAX1(HFX(I),-250.)
+ ENDIF
+#if defined(mpas)
+ TH2(I) = THETAG(I) - HFX(I) / (CPM(I)*RHOX(I)*CHS2(I))
+ CPOT = (100./PSFC(I))**ROVCP
+ TA2(I) = TH2(I)/CPOT
+ QA2(I) = QSFC(I) - QFX(I) / (RHOX(I)*CQS2(I))
+#endif
+ ENDDO
+
+
+ END SUBROUTINE PXSFCLAY1D
+
+!====================================================================
+ SUBROUTINE pxsfclayinit( allowed_to_read )
+
+ LOGICAL , INTENT(IN) :: allowed_to_read
+ INTEGER :: N
+ REAL :: ZOLN,X,Y
+
+
+ END SUBROUTINE pxsfclayinit
+
+!-------------------------------------------------------------------
+
+END MODULE module_sf_pxsfclay