150 INTEGER,
DIMENSION(:),
POINTER :: sxrem_type => null()
161 REAL (rprec) :: ne_unit = 1.0
163 REAL (rprec) :: ne_min = 0.0
165 REAL (rprec) :: te_min = 0.0
167 REAL (rprec) :: ti_min = 0.0
169 REAL (rprec) :: ze_min = 1.0
171 REAL (rprec),
DIMENSION(:),
POINTER :: sxrem_min => null()
173 REAL (rprec) :: pressure_fraction = 0.0
175 REAL (rprec),
DIMENSION(:),
POINTER :: coosig_wgts => null()
180 REAL (rprec),
DIMENSION(:,:),
POINTER :: transmission => null()
186 REAL (rprec) :: grid_start
188 REAL (rprec) :: grid_step
190 REAL (rprec),
DIMENSION(:),
POINTER :: ne_grid => null()
192 REAL (rprec),
DIMENSION(:,:),
POINTER :: sxrem_grid => null()
194 REAL (rprec),
DIMENSION(:),
POINTER :: te_grid => null()
196 REAL (rprec),
DIMENSION(:),
POINTER :: ti_grid => null()
198 REAL (rprec),
DIMENSION(:),
POINTER :: ze_grid => null()
201 REAL (rprec),
DIMENSION(:),
POINTER :: sxrem_te => null()
206 REAL (rprec) :: resonace_range
209 REAL (rprec),
DIMENSION(:),
POINTER :: signal_factor => null()
211 REAL (rprec),
DIMENSION(:),
POINTER :: signal_offset => null()
335 & ze_type, ne_unit, ne_min, te_min, ti_min, &
336 & ze_min, sxrem_min, pressure_fraction, &
337 & emission, equilibrium, sxrem_te, &
338 & sxrem_ratio, resonace_range, coosig_wgts, &
339 & state_flags, signal_factor, &
340 & signal_offset, int_params)
347 CHARACTER (len=data_name_length),
INTENT(in) :: ne_type
348 CHARACTER (len=data_name_length),
DIMENSION(:),
INTENT(in) ::
350 CHARACTER (len=data_name_length),
INTENT(in) :: te_type
351 CHARACTER (len=data_name_length),
INTENT(in) :: ti_type
352 CHARACTER (len=data_name_length),
INTENT(in) :: ze_type
353 REAL (rprec),
INTENT(in) :: ne_unit
354 REAL (rprec),
INTENT(in) :: ne_min
355 REAL (rprec),
INTENT(in) :: te_min
356 REAL (rprec),
INTENT(in) :: ti_min
357 REAL (rprec),
INTENT(in) :: ze_min
358 REAL (rprec),
DIMENSION(:),
INTENT(in) :: sxrem_min
359 REAL (rprec),
INTENT(in) :: pressure_fraction
362 REAL (rprec),
DIMENSION(:),
INTENT(in) :: sxrem_te
363 REAL (rprec),
DIMENSION(:),
INTENT(in) ::
sxrem_ratio
364 REAL (rprec),
INTENT(in) :: resonace_range
365 REAL (rprec),
DIMENSION(:),
INTENT(in) :: coosig_wgts
366 INTEGER,
INTENT(in) :: state_flags
367 REAL (rprec),
DIMENSION(:) :: signal_factor
368 REAL (rprec),
DIMENSION(:) :: signal_offset
374 REAL (rprec) :: start_time
377 start_time = profiler_get_start_time()
383 SELECT CASE (trim(adjustl(ne_type)))
395 WRITE (*,*)
'ne type: ' // trim(adjustl(ne_type)) //
396 &
' setting type to none.'
402 DO i = 1,
SIZE(sxrem_type)
404 SELECT CASE (trim(adjustl(sxrem_type(i))))
412 CASE (
'pp_sxrem_te_ne')
418 &
'sxrem type: ' // trim(adjustl(sxrem_type(i))) //
419 &
' setting type to none.'
426 SELECT CASE (trim(adjustl(te_type)))
435 CASE (
'pp_ne_vmec_p',
'pp_ne_p')
439 WRITE (*,*)
'te type: ' // trim(adjustl(te_type)) //
440 &
' setting type to none.'
445 SELECT CASE (trim(adjustl(ti_type)))
454 WRITE (*,*)
'ti type: ' // trim(adjustl(ti_type)) //
455 &
' setting type to none.'
460 SELECT CASE (trim(adjustl(ze_type)))
469 WRITE (*,*)
'ze type: ' // trim(adjustl(te_type)) //
470 &
' setting type to none.'
481 &
'Cannot derive both the denisty and temperature' //
482 &
' from pressure in the same model.')
494 DO i = 1,
SIZE(coosig_wgts)
507 IF (grid_size .gt. 0)
THEN
519 grid_size = minloc(sxrem_te(2:), dim=1)
520 IF (grid_size .gt. 1)
THEN
538 CALL profiler_set_stop_time(
'model_construct', start_time)
557 TYPE (model_class),
POINTER :: this
560 IF (
ASSOCIATED(this%sxrem_type))
THEN
561 DEALLOCATE(this%sxrem_type)
562 this%sxrem_type => null()
565 IF (
ASSOCIATED(this%emission))
THEN
567 this%emission => null()
570 IF (
ASSOCIATED(this%equilibrium))
THEN
572 this%equilibrium => null()
575 IF (
ASSOCIATED(this%sxrem_min))
THEN
576 DEALLOCATE(this%sxrem_min)
577 this%sxrem_min => null()
580 IF (
ASSOCIATED(this%ne_grid))
THEN
581 DEALLOCATE(this%ne_grid)
582 this%ne_grid => null()
585 IF (
ASSOCIATED(this%sxrem_grid))
THEN
586 DEALLOCATE(this%sxrem_grid)
587 this%sxrem_grid => null()
590 IF (
ASSOCIATED(this%te_grid))
THEN
591 DEALLOCATE(this%te_grid)
592 this%te_grid => null()
595 IF (
ASSOCIATED(this%ti_grid))
THEN
596 DEALLOCATE(this%ti_grid)
597 this%ti_grid => null()
600 IF (
ASSOCIATED(this%ze_grid))
THEN
601 DEALLOCATE(this%ze_grid)
602 this%ze_grid => null()
605 IF (
ASSOCIATED(this%sxrem_te))
THEN
606 DEALLOCATE(this%sxrem_te)
607 this%sxrem_te => null()
610 IF (
ASSOCIATED(this%sxrem_ratio))
THEN
611 DEALLOCATE(this%sxrem_ratio)
612 this%sxrem_ratio => null()
615 IF (
ASSOCIATED(this%coosig_wgts))
THEN
616 DEALLOCATE(this%coosig_wgts)
617 this%coosig_wgts => null()
620 IF (
ASSOCIATED(this%signal_factor))
THEN
621 DEALLOCATE(this%signal_factor)
622 this%signal_factor => null()
625 IF (
ASSOCIATED(this%signal_offset))
THEN
626 DEALLOCATE(this%signal_offset)
627 this%signal_offset => null()
630 IF (
ASSOCIATED(this%int_params))
THEN
631 DEALLOCATE(this%int_params)
632 this%int_params => null()
662 TYPE (model_class),
INTENT(inout) :: this
663 INTEGER,
INTENT(in) :: id
664 INTEGER,
INTENT(in) :: i_index
665 INTEGER,
INTENT(in) :: j_index
666 REAL (rprec),
INTENT(in) :: value
667 INTEGER,
INTENT(in) :: eq_comm
671 REAL (rprec) :: start_time
674 start_time = profiler_get_start_time()
679 this%state_flags = ibset(this%state_flags,
684 this%state_flags = ibset(this%state_flags,
689 this%state_flags = ibset(this%state_flags,
694 this%state_flags = ibset(this%state_flags,
699 this%state_flags = ibset(this%state_flags,
704 this%state_flags = ibset(this%state_flags,
707 this%sxrem_min(i_index) =
value
711 this%state_flags = ibset(this%state_flags,
715 this%state_flags = ibset(this%state_flags,
718 this%pressure_fraction =
value
721 this%coosig_wgts(i_index) =
value
724 this%state_flags = ibset(this%state_flags,
726 this%signal_factor(i_index) =
value
729 this%state_flags = ibset(this%state_flags,
731 this%signal_offset(i_index) =
value
735 & i_index, j_index,
value, eq_comm,
750 DO i = 1,
SIZE(this%sxrem_type)
754 this%state_flags = ibset(this%state_flags,
764 CALL profiler_set_stop_time(
'model_set_param', start_time)
781 TYPE (model_class),
INTENT(inout) :: this
782 INTEGER,
INTENT(in) :: size
785 REAL (rprec) :: grid_stop
786 REAL (rprec) :: start_time
789 start_time = profiler_get_start_time()
794 this%grid_step = (grid_stop - this%grid_start)/(
size - 1)
796 CALL profiler_set_stop_time(
'model_set_grid_params', start_time)
812 TYPE (model_class),
INTENT(inout) :: this
818 REAL (rprec) :: start_time
821 start_time = profiler_get_start_time()
823 IF (
ASSOCIATED(this%ne_grid) .and.
825 DO i = 1,
SIZE(this%ne_grid)
826 r = (i - 1)*this%grid_step + this%grid_start
831 IF (
ASSOCIATED(this%sxrem_grid))
THEN
832 DO j = 1,
SIZE(this%sxrem_grid, 2)
833 IF (btest(this%state_flags,
835 DO i = 1,
SIZE(this%sxrem_grid, 1)
836 r = (i - 1)*this%grid_step + this%grid_start
843 IF (
ASSOCIATED(this%te_grid) .and.
845 DO i = 1,
SIZE(this%te_grid)
846 r = (i - 1)*this%grid_step + this%grid_start
851 IF (
ASSOCIATED(this%ti_grid) .and.
853 DO i = 1,
SIZE(this%ti_grid)
854 r = (i - 1)*this%grid_step + this%grid_start
859 IF (
ASSOCIATED(this%ze_grid) .and.
861 DO i = 1,
SIZE(this%ze_grid)
862 r = (i - 1)*this%grid_step + this%grid_start
867 CALL profiler_set_stop_time(
'model_set_grid_params', start_time)
891 CHARACTER (len=*),
INTENT(in) :: param_name
894 REAL (rprec) :: start_time
897 start_time = profiler_get_start_time()
899 SELECT CASE (trim(param_name))
919 CASE (
'pressure_fraction',
'e_pressure_fraction')
922 CASE (
'signal_factor',
'sfactor_spec_fac')
925 CASE (
'signal_offset',
'soffset_spec_fac')
952 CALL profiler_set_stop_time(
'model_get_param_id', start_time)
976 INTEGER,
INTENT(in) :: id
977 INTEGER,
INTENT(in) :: i_index
978 INTEGER,
INTENT(in) :: j_index
981 REAL (rprec) :: start_time
984 start_time = profiler_get_start_time()
1017 IF (
ASSOCIATED(this%ne_grid))
THEN
1024 IF (
ASSOCIATED(this%te_grid))
THEN
1031 IF (
ASSOCIATED(this%ti_grid))
THEN
1038 IF (
ASSOCIATED(this%ze_grid))
THEN
1045 IF (
ASSOCIATED(this%sxrem_grid))
THEN
1053 IF (
ASSOCIATED(this%coosig_wgts))
THEN
1066 CALL profiler_set_stop_time(
'model_get_param_value', start_time)
1087 INTEGER,
INTENT(in) :: id
1090 REAL (rprec) :: start_time
1093 start_time = profiler_get_start_time()
1148 CALL profiler_set_stop_time(
'model_get_param_name', start_time)
1170 REAL (rprec) :: start_time
1173 start_time = profiler_get_start_time()
1178 CALL profiler_set_stop_time(
'model_get_gp_ne_num_hyper_param',
1200 REAL (rprec) :: start_time
1203 start_time = profiler_get_start_time()
1207 CALL profiler_set_stop_time(
'model_get_ne_af', start_time)
1229 INTEGER,
INTENT(in) :: i
1230 INTEGER,
INTENT(in) :: j
1233 REAL (rprec) :: start_time
1236 start_time = profiler_get_start_time()
1243 CALL profiler_set_stop_time(
'model_get_gp_ne_ij', start_time)
1265 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1266 INTEGER,
INTENT(in) :: i
1269 REAL (rprec) :: start_time
1272 start_time = profiler_get_start_time()
1279 CALL profiler_set_stop_time(
'model_get_gp_ne_pi', start_time)
1302 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1303 REAL (rprec),
DIMENSION(3),
INTENT(in) :: y_cart
1306 REAL (rprec) :: start_time
1309 start_time = profiler_get_start_time()
1316 CALL profiler_set_stop_time(
'model_get_gp_ne_pp', start_time)
1337 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1340 REAL (rprec) :: start_time
1343 start_time = profiler_get_start_time()
1345 SELECT CASE (this%ne_type)
1369 CALL profiler_set_stop_time(
'model_get_ne_cart', start_time)
1390 REAL (rprec),
INTENT(in) :: r
1393 REAL (rprec) :: start_time
1396 start_time = profiler_get_start_time()
1398 SELECT CASE (this%ne_type)
1422 CALL profiler_set_stop_time(
'model_get_ne_radial', start_time)
1444 REAL (rprec) :: start_time
1447 start_time = profiler_get_start_time()
1452 CALL profiler_set_stop_time(
'model_get_gp_te_num_hyper_param',
1474 REAL (rprec) :: start_time
1477 start_time = profiler_get_start_time()
1481 CALL profiler_set_stop_time(
'model_get_te_af', start_time)
1503 INTEGER,
INTENT(in) :: i
1504 INTEGER,
INTENT(in) :: j
1507 REAL (rprec) :: start_time
1510 start_time = profiler_get_start_time()
1516 CALL profiler_set_stop_time(
'model_get_gp_te_ij', start_time)
1539 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1540 INTEGER,
INTENT(in) :: i
1543 REAL (rprec) :: start_time
1546 start_time = profiler_get_start_time()
1552 CALL profiler_set_stop_time(
'model_get_gp_te_pi', start_time)
1574 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1575 REAL (rprec),
DIMENSION(3),
INTENT(in) :: y_cart
1578 REAL (rprec) :: start_time
1581 start_time = profiler_get_start_time()
1587 CALL profiler_set_stop_time(
'model_get_gp_te_pp', start_time)
1608 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1611 REAL (rprec) :: start_time
1614 start_time = profiler_get_start_time()
1616 SELECT CASE (this%te_type)
1639 CALL profiler_set_stop_time(
'model_get_te_cart', start_time)
1660 REAL (rprec),
INTENT(in) :: r
1663 REAL (rprec) :: start_time
1666 start_time = profiler_get_start_time()
1668 SELECT CASE (this%te_type)
1691 CALL profiler_set_stop_time(
'model_get_te_radial', start_time)
1713 REAL (rprec) :: start_time
1716 start_time = profiler_get_start_time()
1721 CALL profiler_set_stop_time(
'model_get_gp_ti_num_hyper_param',
1743 REAL (rprec) :: start_time
1746 start_time = profiler_get_start_time()
1750 CALL profiler_set_stop_time(
'model_get_ti_af', start_time)
1772 INTEGER,
INTENT(in) :: i
1773 INTEGER,
INTENT(in) :: j
1776 REAL (rprec) :: start_time
1779 start_time = profiler_get_start_time()
1785 CALL profiler_set_stop_time(
'model_get_gp_ti_ij', start_time)
1807 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1808 INTEGER,
INTENT(in) :: i
1811 REAL (rprec) :: start_time
1814 start_time = profiler_get_start_time()
1820 CALL profiler_set_stop_time(
'model_get_gp_ti_pi', start_time)
1842 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1843 REAL (rprec),
DIMENSION(3),
INTENT(in) :: y_cart
1846 REAL (rprec) :: start_time
1849 start_time = profiler_get_start_time()
1855 CALL profiler_set_stop_time(
'model_get_gp_ti_pp', start_time)
1876 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1879 REAL (rprec) :: start_time
1882 start_time = profiler_get_start_time()
1884 SELECT CASE (this%ti_type)
1896 CALL profiler_set_stop_time(
'model_get_ti_cart', start_time)
1917 REAL (rprec),
INTENT(in) :: r
1920 REAL (rprec) :: start_time
1923 start_time = profiler_get_start_time()
1925 SELECT CASE (this%ti_type)
1937 CALL profiler_set_stop_time(
'model_get_ti_radial', start_time)
1958 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
1961 REAL (rprec) :: start_time
1964 start_time = profiler_get_start_time()
1966 SELECT CASE (this%ze_type)
1978 CALL profiler_set_stop_time(
'model_get_ze_cart', start_time)
1999 REAL (rprec),
INTENT(in) :: r
2002 REAL (rprec) :: start_time
2005 start_time = profiler_get_start_time()
2007 SELECT CASE (this%ze_type)
2019 CALL profiler_set_stop_time(
'model_get_ze_radial', start_time)
2040 INTEGER,
INTENT(in) :: index
2043 REAL (rprec) :: start_time
2046 start_time = profiler_get_start_time()
2052 CALL profiler_set_stop_time(
'model_get_gp_sxrem_num_hyper_param',
2073 INTEGER,
INTENT(in) :: index
2076 REAL (rprec) :: start_time
2079 start_time = profiler_get_start_time()
2084 CALL profiler_set_stop_time(
'model_get_sxrem_af', start_time)
2107 INTEGER,
INTENT(in) :: i
2108 INTEGER,
INTENT(in) :: j
2109 INTEGER,
INTENT(in) :: index
2112 REAL (rprec) :: start_time
2115 start_time = profiler_get_start_time()
2120 & this%sxrem_min(index))
2122 CALL profiler_set_stop_time(
'model_get_gp_sxrem_ij', start_time)
2146 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
2147 INTEGER,
INTENT(in) :: i
2148 INTEGER,
INTENT(in) :: index
2151 REAL (rprec) :: start_time
2154 start_time = profiler_get_start_time()
2159 & this%sxrem_min(index))
2161 CALL profiler_set_stop_time(
'model_get_gp_sxrem_pi', start_time)
2185 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
2186 REAL (rprec),
DIMENSION(3),
INTENT(in) :: y_cart
2187 INTEGER,
INTENT(in) :: index
2190 REAL (rprec) :: start_time
2193 start_time = profiler_get_start_time()
2199 & this%sxrem_min(index))
2201 CALL profiler_set_stop_time(
'model_get_gp_sxrem_pp', start_time)
2223 REAL (rprec),
DIMENSION(3),
INTENT(in) :: x_cart
2224 INTEGER,
INTENT(in) :: index
2227 REAL (rprec) :: start_time
2230 start_time = profiler_get_start_time()
2232 SELECT CASE (this%sxrem_type(index))
2238 & this%sxrem_min(index))
2251 CALL profiler_set_stop_time(
'model_get_sxrem_cart', start_time)
2273 REAL (rprec),
INTENT(in) :: r
2274 INTEGER,
INTENT(in) :: index
2277 REAL (rprec) :: start_time
2280 start_time = profiler_get_start_time()
2282 SELECT CASE (this%sxrem_type(index))
2288 & this%sxrem_min(index))
2301 CALL profiler_set_stop_time(
'model_get_sxrem_radial', start_time)
2325 REAL (rprec),
INTENT(in) :: te
2328 REAL (rprec) :: start_time
2331 start_time = profiler_get_start_time()
2334 & this%sxrem_ratio,
SIZE(this%sxrem_te))
2336 CALL profiler_set_stop_time(
'model_get_sxrem_ratio', start_time)
2355 REAL (rprec) :: start_time
2358 start_time = profiler_get_start_time()
2360 SELECT CASE (this%ne_type)
2373 CALL profiler_set_stop_time(
'model_get_ne_type', start_time)
2392 REAL (rprec) :: start_time
2395 start_time = profiler_get_start_time()
2397 SELECT CASE (this%te_type)
2410 CALL profiler_set_stop_time(
'model_get_te_type', start_time)
2429 REAL (rprec) :: start_time
2432 start_time = profiler_get_start_time()
2434 SELECT CASE (this%te_type)
2444 CALL profiler_set_stop_time(
'model_get_ti_type', start_time)
2463 REAL (rprec) :: start_time
2466 start_time = profiler_get_start_time()
2468 SELECT CASE (this%ze_type)
2478 CALL profiler_set_stop_time(
'model_get_ze_type', start_time)
2496 INTEGER,
INTENT(in) :: index
2499 REAL (rprec) :: start_time
2502 start_time = profiler_get_start_time()
2504 SELECT CASE (this%sxrem_type(index))
2517 CALL profiler_set_stop_time(
'model_get_sxrem_type', start_time)
2537 INTEGER,
INTENT(in) :: index
2540 REAL (rprec) :: start_time
2543 start_time = profiler_get_start_time()
2545 IF (index .lt. 1)
THEN
2551 CALL profiler_set_stop_time(
'model_get_signal_factor', start_time)
2571 INTEGER,
INTENT(in) :: index
2574 REAL (rprec) :: start_time
2577 start_time = profiler_get_start_time()
2579 IF (index .lt. 1)
THEN
2585 CALL profiler_set_stop_time(
'model_get_signal_offset', start_time)
2609 INTEGER,
INTENT(in) :: id
2612 REAL (rprec) :: start_time
2615 start_time = profiler_get_start_time()
2631 CALL profiler_set_stop_time(
'model_is_recon_param', start_time)
2651 TYPE (model_class),
INTENT(inout) :: this
2654 REAL (rprec) :: start_time
2657 start_time = profiler_get_start_time()
2663 CALL profiler_set_stop_time(
'model_reset_state', start_time)
2679 TYPE (model_class),
INTENT(inout) :: this
2682 REAL (rprec) :: start_time
2685 start_time = profiler_get_start_time()
2689 CALL profiler_set_stop_time(
'model_save_state', start_time)
2706 FUNCTION model_converge(this, num_iter, iou, eq_comm, param_name)
2713 INTEGER,
INTENT(inout) :: num_iter
2714 INTEGER,
INTENT(in) :: iou
2715 INTEGER,
INTENT(in) :: eq_comm
2716 CHARACTER (len=*),
INTENT(in) :: param_name
2719 INTEGER :: init_num_iter
2722 REAL (rprec) :: start_time
2725 start_time = profiler_get_start_time()
2727 IF (this%equilibrium%force_solve)
THEN
2731 init_num_iter = num_iter
2735 #if defined (MPI_OPT)
2736 CALL mpi_bcast(mpi_equilibrium_task, 1, mpi_integer, 0,
2738 CALL mpi_bcast(this%state_flags, 1, mpi_integer, 0, eq_comm,
2743 & num_iter, iou, eq_comm,
2750 IF (init_num_iter .eq. 1)
THEN
2757 & num_iter - init_num_iter, trim(param_name)
2759 & num_iter - init_num_iter, trim(param_name)
2765 CALL profiler_set_stop_time(
'model_converge', start_time)
2767 1000
FORMAT(
'Model converged ',l,2(2x,i7),
' ',a)
2786 TYPE (model_class),
INTENT(in) :: this
2787 INTEGER,
INTENT(in) :: iou
2791 REAL (rprec) :: start_time
2794 start_time = profiler_get_start_time()
2797 WRITE (iou,*)
' *** Model Parameters'
2798 WRITE (iou,*)
'model_ne_type is ',
2801 DO i = 1,
SIZE(this%sxrem_type)
2802 WRITE (iou,*)
'model_sxrem_type is ',
2806 WRITE (iou,*)
'model_te_type is ',
2808 WRITE (iou,*)
'model_ti_type is ',
2810 WRITE (iou,*)
'model_ze_type is ',
2812 WRITE (iou, 1000)
'ne_pp_unit is ', this%ne_unit
2813 WRITE (iou, 1000)
'ne_min is ', this%ne_min
2814 WRITE (iou, 1000)
'te_min is ', this%te_min
2815 WRITE (iou, 1000)
'ti_min is ', this%ti_min
2816 WRITE (iou, 1000)
'ze_min is ', this%ze_min
2817 WRITE (iou, 1000)
'e_pressure_fraction is ',
2818 & this%pressure_fraction
2820 IF (
ASSOCIATED(this%coosig_wgts))
THEN
2821 DO i = 1,
SIZE(this%coosig_wgts)
2824 IF (.NOT.(this%coosig_wgts(i) .EQ. 0.0))
THEN
2825 WRITE (iou,1001) i,this%coosig_wgts(i)
2830 WRITE (iou, 1000)
'signal_factors are ',
2831 & this%signal_factor
2833 1000
FORMAT(1x,a,2x,es12.5)
2834 1001
FORMAT(
' coosig_wgt(',i4,
') is ',es12.5)
2838 CALL profiler_set_stop_time(
'model_write', start_time)
2897 & string_len_dim_id)
2903 TYPE (model_class),
INTENT(in) :: this
2904 INTEGER,
INTENT(in) :: result_ncid
2905 INTEGER,
INTENT(in) :: maxnsteps_dim_id
2906 INTEGER,
INTENT(in) :: string_len_dim_id
2910 INTEGER :: model_grid_size_dim_id
2911 INTEGER :: model_num_sxrem_dim_id
2912 INTEGER :: model_num_coosig_w_dim_id
2913 INTEGER :: ne_type_var_id
2914 INTEGER :: te_type_var_id
2915 INTEGER :: ti_type_var_id
2916 INTEGER :: ze_type_var_id
2917 INTEGER :: sxrem_type_var_id
2918 INTEGER :: ne_unit_var_id
2919 INTEGER :: ne_min_var_id
2920 INTEGER :: te_min_var_id
2921 INTEGER :: ti_min_var_id
2922 INTEGER :: ze_min_var_id
2923 INTEGER :: pressure_fraction_var_id
2924 INTEGER :: ne_grid_var_id
2925 INTEGER :: te_grid_var_id
2926 INTEGER :: ti_grid_var_id
2927 INTEGER :: ze_grid_var_id
2928 INTEGER :: sxrem_grid_var_id
2929 INTEGER :: coosig_w_var_id
2930 REAL (rprec) :: start_time
2933 start_time = profiler_get_start_time()
2936 IF (
ASSOCIATED(this%ne_grid) .or.
2937 &
ASSOCIATED(this%te_grid) .or.
2938 &
ASSOCIATED(this%ze_grid) .or.
2939 &
ASSOCIATED(this%sxrem_grid))
THEN
2940 status = nf_def_dim(result_ncid,
'model_grid_size',
2941 &
SIZE(this%ne_grid),
2942 & model_grid_size_dim_id)
2944 status = nf_def_dim(result_ncid,
'model_grid_size', 1,
2945 & model_grid_size_dim_id)
2947 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2949 IF (
ASSOCIATED(this%sxrem_type))
THEN
2950 status = nf_def_dim(result_ncid,
'model_num_sxrem',
2951 &
SIZE(this%sxrem_type, 1),
2952 & model_num_sxrem_dim_id)
2954 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2956 IF (
ASSOCIATED(this%coosig_wgts))
THEN
2957 status = nf_def_dim(result_ncid,
'model_num_coosig',
2958 &
SIZE(this%coosig_wgts, 1),
2959 & model_num_coosig_w_dim_id)
2961 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2964 status = nf_def_var(result_ncid,
'model_ne_type', nf_char, 1,
2965 & (/ string_len_dim_id /), ne_type_var_id)
2966 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2968 status = nf_def_var(result_ncid,
'model_te_type', nf_char, 1,
2969 & (/ string_len_dim_id /), te_type_var_id)
2970 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2972 status = nf_def_var(result_ncid,
'model_ti_type', nf_char, 1,
2973 & (/ string_len_dim_id /), ti_type_var_id)
2974 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2976 status = nf_def_var(result_ncid,
'model_ze_type', nf_char, 1,
2977 & (/ string_len_dim_id /), ze_type_var_id)
2978 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2980 IF (
ASSOCIATED(this%sxrem_type))
THEN
2981 status = nf_def_var(result_ncid,
'model_sxrem_type', nf_char,
2982 & 2, (/ string_len_dim_id,
2983 & model_num_sxrem_dim_id /),
2984 & sxrem_type_var_id)
2985 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2988 status = nf_def_var(result_ncid,
'ne_unit', nf_double, 1,
2989 & (/ maxnsteps_dim_id /), ne_unit_var_id)
2990 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2992 status = nf_def_var(result_ncid,
'ne_min', nf_double, 1,
2993 & (/ maxnsteps_dim_id /), ne_min_var_id)
2994 CALL assert_eq(status, nf_noerr, nf_strerror(status))
2996 status = nf_def_var(result_ncid,
'te_min', nf_double, 1,
2997 & (/ maxnsteps_dim_id /), te_min_var_id)
2998 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3000 status = nf_def_var(result_ncid,
'ti_min', nf_double, 1,
3001 & (/ maxnsteps_dim_id /), ti_min_var_id)
3002 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3004 status = nf_def_var(result_ncid,
'ze_min', nf_double, 1,
3005 & (/ maxnsteps_dim_id /), ze_min_var_id)
3006 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3008 status = nf_def_var(result_ncid,
'pressure_fraction', nf_double,
3009 & 1, (/ maxnsteps_dim_id /),
3010 & pressure_fraction_var_id)
3011 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3013 IF (
ASSOCIATED(this%ne_grid))
THEN
3014 status = nf_def_var(result_ncid,
'ne_grid', nf_double, 2,
3015 & (/ model_grid_size_dim_id,
3016 & maxnsteps_dim_id /), ne_grid_var_id)
3019 IF (
ASSOCIATED(this%te_grid))
THEN
3020 status = nf_def_var(result_ncid,
'te_grid', nf_double, 2,
3021 & (/ model_grid_size_dim_id,
3022 & maxnsteps_dim_id /), te_grid_var_id)
3025 IF (
ASSOCIATED(this%te_grid))
THEN
3026 status = nf_def_var(result_ncid,
'ti_grid', nf_double, 2,
3027 & (/ model_grid_size_dim_id,
3028 & maxnsteps_dim_id /), ti_grid_var_id)
3031 IF (
ASSOCIATED(this%ze_grid))
THEN
3032 status = nf_def_var(result_ncid,
'ze_grid', nf_double, 2,
3033 & (/ model_grid_size_dim_id,
3034 & maxnsteps_dim_id /), ze_grid_var_id)
3037 IF (
ASSOCIATED(this%sxrem_grid))
THEN
3038 status = nf_def_var(result_ncid,
'sxrem_grid', nf_double, 3,
3039 & (/ model_grid_size_dim_id,
3040 & model_num_sxrem_dim_id,
3041 & maxnsteps_dim_id /), sxrem_grid_var_id)
3044 IF (
ASSOCIATED(this%coosig_wgts))
THEN
3045 status = nf_def_var(result_ncid,
'coosig_wgts', nf_double, 2,
3046 & (/ model_num_coosig_w_dim_id,
3047 & maxnsteps_dim_id /), coosig_w_var_id)
3053 CALL profiler_set_stop_time(
'model_def_result', start_time)
3071 TYPE (model_class),
INTENT(in) :: this
3072 INTEGER,
INTENT(in) :: result_ncid
3075 INTEGER :: i, status
3076 INTEGER :: ne_type_var_id
3077 INTEGER :: te_type_var_id
3078 INTEGER :: ti_type_var_id
3079 INTEGER :: ze_type_var_id
3080 INTEGER :: sxrem_type_var_id
3081 REAL (rprec) :: start_time
3084 start_time = profiler_get_start_time()
3086 status = nf_inq_varid(result_ncid,
'model_ne_type',
3088 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3089 status = nf_put_var_text(result_ncid, ne_type_var_id,
3091 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3093 status = nf_inq_varid(result_ncid,
'model_te_type',
3095 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3096 status = nf_put_var_text(result_ncid, te_type_var_id,
3098 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3100 status = nf_inq_varid(result_ncid,
'model_ti_type',
3102 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3103 status = nf_put_var_text(result_ncid, ti_type_var_id,
3105 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3107 status = nf_inq_varid(result_ncid,
'model_ze_type',
3109 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3110 status = nf_put_var_text(result_ncid, ze_type_var_id,
3112 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3114 IF (
ASSOCIATED(this%sxrem_type))
THEN
3115 status = nf_inq_varid(result_ncid,
'model_sxrem_type',
3116 & sxrem_type_var_id)
3117 DO i = 1,
SIZE(this%sxrem_type)
3118 status = nf_put_vara_text(result_ncid, sxrem_type_var_id,
3120 & (/ data_name_length, 1 /),
3122 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3128 CALL profiler_set_stop_time(
'model_write_init_data', start_time)
3145 TYPE (model_class),
INTENT(in) :: this
3146 INTEGER,
INTENT(in) :: result_ncid
3147 INTEGER,
INTENT(in) :: current_step
3150 INTEGER :: i, status
3151 INTEGER :: ne_unit_var_id
3152 INTEGER :: ne_min_var_id
3153 INTEGER :: te_min_var_id
3154 INTEGER :: ti_min_var_id
3155 INTEGER :: ze_min_var_id
3156 INTEGER :: pressure_fraction_var_id
3157 INTEGER :: ne_grid_var_id
3158 INTEGER :: te_grid_var_id
3159 INTEGER :: ti_grid_var_id
3160 INTEGER :: ze_grid_var_id
3161 INTEGER :: sxrem_grid_var_id
3162 INTEGER :: coosig_w_var_id
3163 REAL (rprec) :: start_time
3166 start_time = profiler_get_start_time()
3168 status = nf_inq_varid(result_ncid,
'ne_unit', ne_unit_var_id)
3169 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3170 status = nf_put_var1_double(result_ncid, ne_unit_var_id,
3171 & current_step, this%ne_unit)
3172 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3174 status = nf_inq_varid(result_ncid,
'ne_min', ne_min_var_id)
3175 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3176 status = nf_put_var1_double(result_ncid, ne_min_var_id,
3177 & current_step, this%ne_min)
3178 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3180 status = nf_inq_varid(result_ncid,
'te_min', te_min_var_id)
3181 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3182 status = nf_put_var1_double(result_ncid, te_min_var_id,
3183 & current_step, this%te_min)
3184 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3186 status = nf_inq_varid(result_ncid,
'ti_min', ti_min_var_id)
3187 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3188 status = nf_put_var1_double(result_ncid, ti_min_var_id,
3189 & current_step, this%ti_min)
3190 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3192 status = nf_inq_varid(result_ncid,
'ze_min', ze_min_var_id)
3193 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3194 status = nf_put_var1_double(result_ncid, ze_min_var_id,
3195 & current_step, this%ze_min)
3196 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3198 status = nf_inq_varid(result_ncid,
'pressure_fraction',
3199 & pressure_fraction_var_id)
3200 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3201 status = nf_put_var1_double(result_ncid, pressure_fraction_var_id,
3202 & current_step, this%pressure_fraction)
3203 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3205 IF (
ASSOCIATED(this%ne_grid))
THEN
3206 status = nf_inq_varid(result_ncid,
'ne_grid', ne_grid_var_id)
3207 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3208 status = nf_put_vara_double(result_ncid, ne_grid_var_id,
3209 & (/ 1, current_step /),
3210 & (/
SIZE(this%ne_grid), 1 /),
3212 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3215 IF (
ASSOCIATED(this%te_grid))
THEN
3216 status = nf_inq_varid(result_ncid,
'te_grid', te_grid_var_id)
3217 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3218 status = nf_put_vara_double(result_ncid, te_grid_var_id,
3219 & (/ 1, current_step /),
3220 & (/
SIZE(this%te_grid), 1 /),
3222 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3225 IF (
ASSOCIATED(this%ti_grid))
THEN
3226 status = nf_inq_varid(result_ncid,
'ti_grid', ti_grid_var_id)
3227 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3228 status = nf_put_vara_double(result_ncid, ti_grid_var_id,
3229 & (/ 1, current_step /),
3230 & (/
SIZE(this%ti_grid), 1 /),
3232 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3235 IF (
ASSOCIATED(this%ze_grid))
THEN
3236 status = nf_inq_varid(result_ncid,
'ze_grid', ze_grid_var_id)
3237 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3238 status = nf_put_vara_double(result_ncid, ze_grid_var_id,
3239 & (/ 1, current_step /),
3240 & (/
SIZE(this%ze_grid), 1 /),
3242 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3245 IF (
ASSOCIATED(this%sxrem_grid))
THEN
3246 status = nf_inq_varid(result_ncid,
'sxrem_grid',
3247 & sxrem_grid_var_id)
3248 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3249 status = nf_put_vara_double(result_ncid, sxrem_grid_var_id,
3250 & (/ 1, 1, current_step /),
3251 & (/
SIZE(this%sxrem_grid, 1),
3252 &
SIZE(this%sxrem_grid, 2), 1 /),
3254 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3257 IF (
ASSOCIATED(this%coosig_wgts))
THEN
3258 status = nf_inq_varid(result_ncid,
'coosig_wgts',
3260 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3261 status = nf_put_vara_double(result_ncid, coosig_w_var_id,
3262 & (/ 1, current_step /),
3263 & (/
SIZE(this%coosig_wgts), 1 /),
3265 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3271 CALL profiler_set_stop_time(
'model_write_step_data', start_time)
3290 TYPE (model_class),
INTENT(inout) :: this
3291 INTEGER,
INTENT(in) :: result_ncid
3292 INTEGER,
INTENT(in) :: current_step
3295 INTEGER :: i, status
3296 INTEGER :: ne_unit_var_id
3297 INTEGER :: ne_min_var_id
3298 INTEGER :: te_min_var_id
3299 INTEGER :: ti_min_var_id
3300 INTEGER :: ze_min_var_id
3301 INTEGER :: pressure_fraction_var_id
3302 INTEGER :: ne_grid_var_id
3303 INTEGER :: te_grid_var_id
3304 INTEGER :: ti_grid_var_id
3305 INTEGER :: ze_grid_var_id
3306 INTEGER :: sxrem_grid_var_id
3307 INTEGER :: coosig_w_var_id
3308 REAL (rprec) :: start_time
3311 start_time = profiler_get_start_time()
3313 status = nf_inq_varid(result_ncid,
'ne_unit', ne_unit_var_id)
3314 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3315 status = nf_get_var1_double(result_ncid, ne_unit_var_id,
3316 & current_step, this%ne_unit)
3317 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3319 status = nf_inq_varid(result_ncid,
'ne_min', ne_min_var_id)
3320 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3321 status = nf_get_var1_double(result_ncid, ne_min_var_id,
3322 & current_step, this%ne_min)
3323 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3325 status = nf_inq_varid(result_ncid,
'te_min', te_min_var_id)
3326 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3327 status = nf_get_var1_double(result_ncid, te_min_var_id,
3328 & current_step, this%te_min)
3329 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3331 status = nf_inq_varid(result_ncid,
'ti_min', ti_min_var_id)
3332 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3333 status = nf_get_var1_double(result_ncid, ti_min_var_id,
3334 & current_step, this%ti_min)
3335 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3337 status = nf_inq_varid(result_ncid,
'ze_min', ze_min_var_id)
3338 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3339 status = nf_get_var1_double(result_ncid, ze_min_var_id,
3340 & current_step, this%ze_min)
3341 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3343 status = nf_inq_varid(result_ncid,
'pressure_fraction',
3344 & pressure_fraction_var_id)
3345 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3346 status = nf_get_var1_double(result_ncid, pressure_fraction_var_id,
3347 & current_step, this%pressure_fraction)
3348 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3350 IF (
ASSOCIATED(this%ne_grid))
THEN
3351 status = nf_inq_varid(result_ncid,
'ne_grid', ne_grid_var_id)
3352 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3353 status = nf_get_vara_double(result_ncid, ne_grid_var_id,
3354 & (/ 1, current_step /),
3355 & (/
SIZE(this%ne_grid), 1 /),
3357 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3360 IF (
ASSOCIATED(this%te_grid))
THEN
3361 status = nf_inq_varid(result_ncid,
'te_grid', te_grid_var_id)
3362 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3363 status = nf_get_vara_double(result_ncid, te_grid_var_id,
3364 & (/ 1, current_step /),
3365 & (/
SIZE(this%te_grid), 1 /),
3367 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3370 IF (
ASSOCIATED(this%ti_grid))
THEN
3371 status = nf_inq_varid(result_ncid,
'ti_grid', ti_grid_var_id)
3372 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3373 status = nf_get_vara_double(result_ncid, ti_grid_var_id,
3374 & (/ 1, current_step /),
3375 & (/
SIZE(this%ti_grid), 1 /),
3377 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3380 IF (
ASSOCIATED(this%ze_grid))
THEN
3381 status = nf_inq_varid(result_ncid,
'ze_grid', ze_grid_var_id)
3382 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3383 status = nf_get_vara_double(result_ncid, ze_grid_var_id,
3384 & (/ 1, current_step /),
3385 & (/
SIZE(this%ze_grid), 1 /),
3387 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3390 IF (
ASSOCIATED(this%sxrem_grid))
THEN
3391 status = nf_inq_varid(result_ncid,
'sxrem_grid',
3392 & sxrem_grid_var_id)
3393 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3394 status = nf_get_vara_double(result_ncid, sxrem_grid_var_id,
3395 & (/ 1, 1, current_step /),
3396 & (/
SIZE(this%sxrem_grid, 1),
3397 &
SIZE(this%sxrem_grid, 2), 1 /),
3399 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3402 IF (
ASSOCIATED(this%coosig_wgts))
THEN
3403 status = nf_inq_varid(result_ncid,
'coosig_wgts',
3405 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3406 status = nf_get_vara_double(result_ncid, coosig_w_var_id,
3407 & (/ 1, current_step /),
3408 & (/
SIZE(this%coosig_wgts), 1 /),
3410 CALL assert_eq(status, nf_noerr, nf_strerror(status))
3418 CALL profiler_set_stop_time(
'model_restart', start_time)
3439 TYPE (model_class),
INTENT(inout) :: this
3440 INTEGER,
INTENT(in) :: recon_comm
3442 #if defined(MPI_OPT)
3445 INTEGER :: grid_size
3446 REAL (rprec) :: start_time
3449 start_time = profiler_get_start_time()
3453 CALL mpi_bcast(this%state_flags, 1, mpi_integer, 0, recon_comm,
3457 IF (grid_size .gt. 0)
THEN
3458 CALL mpi_bcast(this%ne_grid, grid_size, mpi_real8, 0,
3459 & recon_comm, error)
3460 CALL mpi_bcast(this%sxrem_grid,
3461 & grid_size*
SIZE(this%sxrem_type), mpi_real8, 0,
3462 & recon_comm, error)
3463 CALL mpi_bcast(this%te_grid, grid_size, mpi_real8, 0,
3464 & recon_comm, error)
3465 CALL mpi_bcast(this%ti_grid, grid_size, mpi_real8, 0,
3466 & recon_comm, error)
3467 CALL mpi_bcast(this%ze_grid, grid_size, mpi_real8, 0,
3468 & recon_comm, error)
3471 CALL profiler_set_stop_time(
'model_sync_state', start_time)
3491 TYPE (model_class),
INTENT(inout) :: this
3492 INTEGER,
INTENT(in) :: index
3493 INTEGER,
INTENT(in) :: recon_comm
3495 #if defined(MPI_OPT)
3498 INTEGER :: grid_size
3500 REAL (rprec) :: start_time
3503 start_time = profiler_get_start_time()
3508 IF (grid_size .gt. 0)
THEN
3509 CALL mpi_comm_rank(recon_comm, mpi_rank, error)
3511 IF (mpi_rank .eq. index)
THEN
3513 CALL mpi_ssend(this%ne_grid, grid_size, mpi_real8, 0,
3514 & mpi_rank, recon_comm, error)
3515 CALL mpi_ssend(this%sxrem_grid,
3516 & grid_size*
SIZE(this%sxrem_type), mpi_real8,
3517 & 0, mpi_rank, recon_comm, error)
3518 CALL mpi_ssend(this%te_grid, grid_size, mpi_real8, 0,
3519 & mpi_rank, recon_comm, error)
3520 CALL mpi_ssend(this%ti_grid, grid_size, mpi_real8, 0,
3521 & mpi_rank, recon_comm, error)
3522 CALL mpi_ssend(this%ze_grid, grid_size, mpi_real8, 0,
3523 & mpi_rank, recon_comm, error)
3525 ELSE IF (mpi_rank .eq. 0)
THEN
3527 CALL mpi_recv(this%ne_grid, grid_size, mpi_real8, index,
3528 & index, recon_comm, mpi_status_ignore, error)
3529 CALL mpi_recv(this%sxrem_grid,
3530 & grid_size*
SIZE(this%sxrem_type), mpi_real8,
3531 & index, index, recon_comm, mpi_status_ignore,
3533 CALL mpi_recv(this%te_grid, grid_size, mpi_real8, index,
3534 & index, recon_comm, mpi_status_ignore, error)
3535 CALL mpi_recv(this%ti_grid, grid_size, mpi_real8, index,
3536 & index, recon_comm, mpi_status_ignore, error)
3537 CALL mpi_recv(this%ze_grid, grid_size, mpi_real8, index,
3538 & index, recon_comm, mpi_status_ignore, error)
3543 CALL profiler_set_stop_time(
'model_sync_child', start_time)