- Timestamp:
- Aug 2, 2024, 2:12:03 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/guide_loc_mod.F90
r5136 r5158 450 450 alpha_pcor(:) = 1. 451 451 else 452 dol = 1, llm452 DO l = 1, llm 453 453 alpha_pcor(l) = (1. + tanh(((plim_guide_BL - presnivs(l)) / preff) / 0.05)) / 2. 454 454 enddo … … 993 993 WRITE(*, *)trim(modname) // ' : check vertical level order' 994 994 WRITE(*, *)trim(modname) // ' LMDZ :' 995 dol = 1, llm995 DO l = 1, llm 996 996 WRITE(*, *)trim(modname) // ' PL(', l, ')=', (ap(l) + ap(l + 1)) / 2. & 997 997 + psi(1, jjeu) * (bp(l) + bp(l + 1)) / 2. … … 1000 1000 SELECT CASE (guide_plevs) 1001 1001 CASE (0) 1002 dol = 1, nlevnc1002 DO l = 1, nlevnc 1003 1003 WRITE(*, *)trim(modname) // ' PL(', l, ')=', plnc2(1, jjbu, l) 1004 1004 enddo … … 1009 1009 ENDDO 1010 1010 CASE (2) 1011 dol = 1, nlevnc1011 DO l = 1, nlevnc 1012 1012 WRITE(*, *)trim(modname) // ' PL(', l, ')=', pnat2(1, jjbu, l) 1013 1013 enddo … … 1015 1015 WRITE(*, *)trim(modname) // ' invert ordering: invert_p=', invert_p 1016 1016 IF (guide_u) THEN 1017 dol = 1, nlevnc1017 DO l = 1, nlevnc 1018 1018 WRITE(*, *)trim(modname) // ' U(', l, ')=', unat2(1, jjbu, l) 1019 1019 enddo 1020 1020 endif 1021 1021 IF (guide_T) THEN 1022 dol = 1, nlevnc1022 DO l = 1, nlevnc 1023 1023 WRITE(*, *)trim(modname) // ' T(', l, ')=', tnat2(1, jjbu, l) 1024 1024 enddo … … 1066 1066 ! calcul des pressions pour les grilles u et v 1067 1067 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1068 dol = 1, llm1069 doj = jjbu, jjeu1070 doi = 1, iip11068 DO l = 1, llm 1069 DO j = jjbu, jjeu 1070 DO i = 1, iip1 1071 1071 pext(i, j, l) = pls(i, j, l) * aire(i, j) 1072 1072 enddo … … 1083 1083 !$OMP BARRIER 1084 1084 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1085 dol = 1, llm1086 doj = jjbu, jjeu1087 doi = 1, iip11085 DO l = 1, llm 1086 DO j = jjbu, jjeu 1087 DO i = 1, iip1 1088 1088 plunc(i, j, l) = pbarx(i, j, l) / aireu(i, j) 1089 1089 plsnc(i, j, l) = pls(i, j, l) … … 1092 1092 enddo 1093 1093 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1094 dol = 1, llm1095 doj = jjbv, jjev1096 doi = 1, iip11094 DO l = 1, llm 1095 DO j = jjbv, jjev 1096 DO i = 1, iip1 1097 1097 plvnc(i, j, l) = pbary(i, j, l) / airev(i, j) 1098 1098 enddo … … 1106 1106 IF (guide_P) THEN 1107 1107 !$OMP MASTER 1108 doj = jjbu, jjeu1109 doi = 1, iim1108 DO j = jjbu, jjeu 1109 DO i = 1, iim 1110 1110 ij = (j - 1) * iip1 + i 1111 1111 psgui1(ij) = psnat1(i, j) … … 1153 1153 ! Conversion en variables GCM 1154 1154 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1155 dol = 1, llm1156 doj = jjbu, jjeu1155 DO l = 1, llm 1156 DO j = jjbu, jjeu 1157 1157 IF (guide_teta) THEN 1158 doi = 1, iim1158 DO i = 1, iim 1159 1159 ij = (j - 1) * iip1 + i 1160 1160 tgui1(ij, l) = zu1(i, j, l) … … 1162 1162 enddo 1163 1163 ELSE 1164 doi = 1, iim1164 DO i = 1, iim 1165 1165 ij = (j - 1) * iip1 + i 1166 1166 tgui1(ij, l) = zu1(i, j, l) * cpp / pk(i, j, l) … … 1172 1172 enddo 1173 1173 IF (pole_nord) THEN 1174 doi = 1, iip11174 DO i = 1, iip1 1175 1175 tgui1(i, l) = tgui1(1, l) 1176 1176 tgui2(i, l) = tgui2(1, l) … … 1178 1178 endif 1179 1179 IF (pole_sud) THEN 1180 doi = 1, iip11180 DO i = 1, iip1 1181 1181 tgui1(ip1jm + i, l) = tgui1(ip1jm + 1, l) 1182 1182 tgui2(ip1jm + i, l) = tgui2(ip1jm + 1, l) … … 1223 1223 ! Hum.Rel si guide_hr, Hum.Spec. sinon. 1224 1224 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1225 dol = 1, llm1226 doj = jjbu, jjeu1227 doi = 1, iim1225 DO l = 1, llm 1226 DO j = jjbu, jjeu 1227 DO i = 1, iim 1228 1228 ij = (j - 1) * iip1 + i 1229 1229 qgui1(ij, l) = zu1(i, j, l) … … 1234 1234 enddo 1235 1235 IF (pole_nord) THEN 1236 doi = 1, iip11236 DO i = 1, iip1 1237 1237 qgui1(i, l) = qgui1(1, l) 1238 1238 qgui2(i, l) = qgui2(1, l) … … 1240 1240 endif 1241 1241 IF (pole_sud) THEN 1242 doi = 1, iip11242 DO i = 1, iip1 1243 1243 qgui1(ip1jm + i, l) = qgui1(ip1jm + 1, l) 1244 1244 qgui2(ip1jm + i, l) = qgui2(ip1jm + 1, l) … … 1248 1248 IF (guide_hr) THEN 1249 1249 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1250 dol = 1, llm1250 DO l = 1, llm 1251 1251 CALL q_sat(iip1 * jjnu, teta(:, jjbu:jjeu, l) * pk(:, jjbu:jjeu, l) / cpp, & 1252 1252 plsnc(:, jjbu:jjeu, l), qsat(ijbu:ijeu, l)) … … 1301 1301 ! Conversion en variables GCM 1302 1302 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1303 dol = 1, llm1304 doj = jjbu, jjeu1305 doi = 1, iim1303 DO l = 1, llm 1304 DO j = jjbu, jjeu 1305 DO i = 1, iim 1306 1306 ij = (j - 1) * iip1 + i 1307 1307 ugui1(ij, l) = zu1(i, j, l) * cu(i, j) … … 1312 1312 enddo 1313 1313 IF (pole_nord) THEN 1314 doi = 1, iip11314 DO i = 1, iip1 1315 1315 ugui1(i, l) = 0. 1316 1316 ugui2(i, l) = 0. … … 1318 1318 endif 1319 1319 IF (pole_sud) THEN 1320 doi = 1, iip11320 DO i = 1, iip1 1321 1321 ugui1(ip1jm + i, l) = 0. 1322 1322 ugui2(ip1jm + i, l) = 0. … … 1376 1376 ! Conversion en variables GCM 1377 1377 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1378 dol = 1, llm1379 doj = jjbv, jjev1380 doi = 1, iim1378 DO l = 1, llm 1379 DO j = jjbv, jjev 1380 DO i = 1, iim 1381 1381 ij = (j - 1) * iip1 + i 1382 1382 vgui1(ij, l) = zv1(i, j, l) * cv(i, j) … … 1434 1434 !----------------------------------------------------------------------- 1435 1435 IF (guide_reg) THEN 1436 doj = jjb, jje1437 doi = 1, pim1436 DO j = jjb, jje 1437 DO i = 1, pim 1438 1438 IF (typ==2) THEN 1439 1439 zlat = rlatu(j) * 180. / pi … … 1459 1459 !----------------------------------------------------------------------- 1460 1460 !Calcul de l'aire des mailles 1461 doj = 2, jjm1462 doi = 2, iip11461 DO j = 2, jjm 1462 DO i = 2, iip1 1463 1463 zdx(i, j) = 0.5 * (cu(i - 1, j) + cu(i, j)) / cos(rlatu(j)) 1464 1464 enddo 1465 1465 zdx(1, j) = zdx(iip1, j) 1466 1466 enddo 1467 doj = 2, jjm1468 doi = 1, iip11467 DO j = 2, jjm 1468 DO i = 1, iip1 1469 1469 zdy(i, j) = 0.5 * (cv(i, j - 1) + cv(i, j)) 1470 1470 enddo 1471 1471 enddo 1472 doi = 1, iip11472 DO i = 1, iip1 1473 1473 zdx(i, 1) = zdx(i, 2) 1474 1474 zdx(i, jjp1) = zdx(i, jjm) … … 1476 1476 zdy(i, jjp1) = zdy(i, jjm) 1477 1477 enddo 1478 doj = 1, jjp11479 doi = 1, iip11478 DO j = 1, jjp1 1479 DO i = 1, iip1 1480 1480 dxdys(i, j) = sqrt(zdx(i, j) * zdx(i, j) + zdy(i, j) * zdy(i, j)) 1481 1481 enddo 1482 1482 enddo 1483 1483 IF (typ==2) THEN 1484 doj = 1, jjp11485 doi = 1, iim1484 DO j = 1, jjp1 1485 DO i = 1, iim 1486 1486 dxdyu(i, j) = 0.5 * (dxdys(i, j) + dxdys(i + 1, j)) 1487 1487 enddo … … 1490 1490 ENDIF 1491 1491 IF (typ==3) THEN 1492 doj = 1, jjm1493 doi = 1, iip11492 DO j = 1, jjm 1493 DO i = 1, iip1 1494 1494 dxdyv(i, j) = 0.5 * (dxdys(i, j) + dxdys(i, j + 1)) 1495 1495 enddo … … 1505 1505 ! dxdy maximale de la maille 1506 1506 dxdy_max = 0. 1507 doj = 1, jjp11508 doi = 1, iip11507 DO j = 1, jjp1 1508 DO i = 1, iip1 1509 1509 dxdy_max = max(dxdy_max, dxdys(i, j)) 1510 1510 enddo … … 1530 1530 ENDIF !first 1531 1531 1532 doj = jjb, jje1533 doi = 1, pim1532 DO j = jjb, jje 1533 DO i = 1, pim 1534 1534 IF (typ==1) THEN 1535 1535 dxdy_ = dxdys(i, j) … … 2360 2360 REAL zz 2361 2361 2362 dol = 1, nl2363 doi = 2, iim - 12362 DO l = 1, nl 2363 DO i = 2, iim - 1 2364 2364 IF(abs(x(i, l))>1.e10) THEN 2365 2365 zz = 0.5 * (x(i - 1, l) + x(i + 1, l))
Note: See TracChangeset
for help on using the changeset viewer.