MODFLOW 6  version 6.7.0.dev1
USGS Modular Hydrologic Model
memorymanagermodule::mem_allocate Interface Reference
Collaboration diagram for memorymanagermodule::mem_allocate:
Collaboration graph

Private Member Functions

subroutine allocate_logical (sclr, name, mem_path)
 Allocate a logical scalar. More...
 
subroutine allocate_str (sclr, ilen, name, mem_path)
 Allocate a character string. More...
 
subroutine allocate_str1d (astr1d, ilen, nrow, name, mem_path)
 Allocate a 1-dimensional defined length string array. More...
 
subroutine allocate_int (sclr, name, mem_path)
 Allocate a integer scalar. More...
 
subroutine allocate_int1d (aint, nrow, name, mem_path)
 Allocate a 1-dimensional integer array. More...
 
subroutine allocate_int2d (aint, ncol, nrow, name, mem_path)
 Allocate a 2-dimensional integer array. More...
 
subroutine allocate_int3d (aint, ncol, nrow, nlay, name, mem_path)
 Allocate a 3-dimensional integer array. More...
 
subroutine allocate_dbl (sclr, name, mem_path)
 Allocate a real scalar. More...
 
subroutine allocate_dbl1d (adbl, nrow, name, mem_path)
 Allocate a 1-dimensional real array. More...
 
subroutine allocate_dbl2d (adbl, ncol, nrow, name, mem_path)
 Allocate a 2-dimensional real array. More...
 
subroutine allocate_dbl3d (adbl, ncol, nrow, nlay, name, mem_path)
 Allocate a 3-dimensional real array. More...
 
subroutine allocate_charstr1d (acharstr1d, ilen, nrow, name, mem_path)
 Allocate a 1-dimensional array of deferred-length CharacterStringType. More...
 

Detailed Description

Definition at line 54 of file MemoryManager.f90.

Member Function/Subroutine Documentation

◆ allocate_charstr1d()

subroutine memorymanagermodule::mem_allocate::allocate_charstr1d ( type(characterstringtype), dimension(:), intent(inout), pointer, contiguous  acharstr1d,
integer(i4b), intent(in)  ilen,
integer(i4b), intent(in)  nrow,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]acharstr1dvariable for allocation
[in]ilenstring length
[in]nrownumber of strings in array
[in]namevariable name
[in]mem_pathpath where the variable is stored

Definition at line 500 of file MemoryManager.f90.

501  type(CharacterStringType), dimension(:), &
502  pointer, contiguous, intent(inout) :: acharstr1d !< variable for allocation
503  integer(I4B), intent(in) :: ilen !< string length
504  integer(I4B), intent(in) :: nrow !< number of strings in array
505  character(len=*), intent(in) :: name !< variable name
506  character(len=*), intent(in) :: mem_path !< path where the variable is stored
507  ! -- local variables
508  character(len=ilen) :: string
509  type(MemoryType), pointer :: mt
510  integer(I4B) :: n
511  integer(I4B) :: istat
512  integer(I4B) :: isize
513  ! -- code
514  !
515  ! -- initialize string
516  string = ''
517  !
518  ! -- check variable name length
519  call mem_check_length(name, lenvarname, "variable")
520  !
521  ! -- calculate isize
522  isize = nrow
523  !
524  ! -- allocate deferred length string array
525  allocate (acharstr1d(nrow), stat=istat, errmsg=errmsg)
526  !
527  ! -- check for error condition
528  if (istat /= 0) then
529  call allocate_error(name, mem_path, istat, isize)
530  end if
531  !
532  ! -- fill deferred length string with empty string
533  do n = 1, nrow
534  acharstr1d(n) = string
535  end do
536  !
537  ! -- update counter
538  nvalues_astr = nvalues_astr + isize
539  !
540  ! -- allocate memory type
541  allocate (mt)
542  !
543  ! -- set memory type
544  mt%acharstr1d => acharstr1d
545  mt%element_size = ilen
546  mt%isize = isize
547  mt%name = name
548  mt%path = mem_path
549  write (mt%memtype, "(a,' LEN=',i0,' (',i0,')')") 'STRING', ilen, nrow
550  !
551  ! -- add deferred length character array to the memory manager list
552  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_dbl()

subroutine memorymanagermodule::mem_allocate::allocate_dbl ( real(dp), intent(inout), pointer  sclr,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]sclrvariable for allocation
[in]namevariable name
[in]mem_pathpath where variable is stored

Definition at line 728 of file MemoryManager.f90.

729  real(DP), pointer, intent(inout) :: sclr !< variable for allocation
730  character(len=*), intent(in) :: name !< variable name
731  character(len=*), intent(in) :: mem_path !< path where variable is stored
732  ! -- local
733  type(MemoryType), pointer :: mt
734  integer(I4B) :: istat
735  ! -- code
736  !
737  ! -- check variable name length
738  call mem_check_length(name, lenvarname, "variable")
739  !
740  ! -- allocate real scalar
741  allocate (sclr, stat=istat, errmsg=errmsg)
742  if (istat /= 0) then
743  call allocate_error(name, mem_path, istat, 1)
744  end if
745  !
746  ! -- update counter
747  nvalues_aint = nvalues_aint + 1
748  !
749  ! -- allocate memory type
750  allocate (mt)
751  !
752  ! -- set memory type
753  mt%dblsclr => sclr
754  mt%element_size = dp
755  mt%isize = 1
756  mt%name = name
757  mt%path = mem_path
758  write (mt%memtype, "(a)") 'DOUBLE'
759  !
760  ! -- add memory type to the memory list
761  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_dbl1d()

subroutine memorymanagermodule::mem_allocate::allocate_dbl1d ( real(dp), dimension(:), intent(inout), pointer, contiguous  adbl,
integer(i4b), intent(in)  nrow,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]adblvariable for allocation
[in]nrownumber of rows
[in]namevariable name
[in]mem_pathpath where variable is stored

Definition at line 766 of file MemoryManager.f90.

767  real(DP), dimension(:), pointer, contiguous, intent(inout) :: adbl !< variable for allocation
768  integer(I4B), intent(in) :: nrow !< number of rows
769  character(len=*), intent(in) :: name !< variable name
770  character(len=*), intent(in) :: mem_path !< path where variable is stored
771  ! -- local
772  type(MemoryType), pointer :: mt
773  integer(I4B) :: istat
774  integer(I4B) :: isize
775  ! -- code
776  !
777  ! -- check the variable name length
778  call mem_check_length(name, lenvarname, "variable")
779  !
780  ! -- set isize
781  isize = nrow
782  !
783  ! -- allocate the real array
784  allocate (adbl(nrow), stat=istat, errmsg=errmsg)
785  if (istat /= 0) then
786  call allocate_error(name, mem_path, istat, isize)
787  end if
788  !
789  ! -- update counter
790  nvalues_adbl = nvalues_adbl + isize
791  !
792  ! -- allocate memory type
793  allocate (mt)
794  !
795  ! -- set memory type
796  mt%adbl1d => adbl
797  mt%element_size = dp
798  mt%isize = isize
799  mt%name = name
800  mt%path = mem_path
801  write (mt%memtype, "(a,' (',i0,')')") 'DOUBLE', isize
802  !
803  ! -- add memory type to the memory list
804  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_dbl2d()

subroutine memorymanagermodule::mem_allocate::allocate_dbl2d ( real(dp), dimension(:, :), intent(inout), pointer, contiguous  adbl,
integer(i4b), intent(in)  ncol,
integer(i4b), intent(in)  nrow,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]adblvariable for allocation
[in]ncolnumber of columns
[in]nrownumber of rows
[in]namevariable name
[in]mem_pathpath where variable is stored

Definition at line 809 of file MemoryManager.f90.

810  real(DP), dimension(:, :), pointer, contiguous, intent(inout) :: adbl !< variable for allocation
811  integer(I4B), intent(in) :: ncol !< number of columns
812  integer(I4B), intent(in) :: nrow !< number of rows
813  character(len=*), intent(in) :: name !< variable name
814  character(len=*), intent(in) :: mem_path !< path where variable is stored
815  ! -- local
816  type(MemoryType), pointer :: mt
817  integer(I4B) :: istat
818  integer(I4B) :: isize
819  ! -- code
820  !
821  ! -- check the variable name length
822  call mem_check_length(name, lenvarname, "variable")
823  !
824  ! -- set isize
825  isize = ncol * nrow
826  !
827  ! -- allocate the real array
828  allocate (adbl(ncol, nrow), stat=istat, errmsg=errmsg)
829  if (istat /= 0) then
830  call allocate_error(name, mem_path, istat, isize)
831  end if
832  !
833  ! -- update counter
834  nvalues_adbl = nvalues_adbl + isize
835  !
836  ! -- allocate memory type
837  allocate (mt)
838  !
839  ! -- set memory type
840  mt%adbl2d => adbl
841  mt%element_size = dp
842  mt%isize = isize
843  mt%name = name
844  mt%path = mem_path
845  write (mt%memtype, "(a,' (',i0,',',i0,')')") 'DOUBLE', ncol, nrow
846  !
847  ! -- add memory type to the memory list
848  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_dbl3d()

subroutine memorymanagermodule::mem_allocate::allocate_dbl3d ( real(dp), dimension(:, :, :), intent(inout), pointer, contiguous  adbl,
integer(i4b), intent(in)  ncol,
integer(i4b), intent(in)  nrow,
integer(i4b), intent(in)  nlay,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]adblvariable for allocation
[in]ncolnumber of columns
[in]nrownumber of rows
[in]nlaynumber of layers
[in]namevariable name
[in]mem_pathpath where variable is stored

Definition at line 853 of file MemoryManager.f90.

854  real(DP), dimension(:, :, :), pointer, contiguous, intent(inout) :: adbl !< variable for allocation
855  integer(I4B), intent(in) :: ncol !< number of columns
856  integer(I4B), intent(in) :: nrow !< number of rows
857  integer(I4B), intent(in) :: nlay !< number of layers
858  character(len=*), intent(in) :: name !< variable name
859  character(len=*), intent(in) :: mem_path !< path where variable is stored
860  ! -- local
861  type(MemoryType), pointer :: mt
862  integer(I4B) :: istat
863  integer(I4B) :: isize
864  ! -- code
865  !
866  ! -- check the variable name length
867  call mem_check_length(name, lenvarname, "variable")
868  !
869  ! -- set isize
870  isize = ncol * nrow * nlay
871  !
872  ! -- allocate the real array
873  allocate (adbl(ncol, nrow, nlay), stat=istat, errmsg=errmsg)
874  if (istat /= 0) then
875  call allocate_error(name, mem_path, istat, isize)
876  end if
877  !
878  ! -- update the counter
879  nvalues_adbl = nvalues_adbl + isize
880  !
881  ! -- allocate memory type
882  allocate (mt)
883  !
884  ! -- set memory type
885  mt%adbl3d => adbl
886  mt%element_size = dp
887  mt%isize = isize
888  mt%name = name
889  mt%path = mem_path
890  write (mt%memtype, "(a,' (',i0,',',i0,',',i0,')')") 'DOUBLE', ncol, &
891  nrow, nlay
892  !
893  ! -- add memory type to the memory list
894  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_int()

subroutine memorymanagermodule::mem_allocate::allocate_int ( integer(i4b), intent(inout), pointer  sclr,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]sclrvariable for allocation
[in]namevariable name
[in]mem_pathpath where the variable is stored

Definition at line 557 of file MemoryManager.f90.

558  integer(I4B), pointer, intent(inout) :: sclr !< variable for allocation
559  character(len=*), intent(in) :: name !< variable name
560  character(len=*), intent(in) :: mem_path !< path where the variable is stored
561  ! -- local
562  type(MemoryType), pointer :: mt
563  integer(I4B) :: istat
564  ! -- code
565  !
566  ! -- check variable name length
567  call mem_check_length(name, lenvarname, "variable")
568  !
569  ! -- allocate integer scalar
570  allocate (sclr, stat=istat, errmsg=errmsg)
571  if (istat /= 0) then
572  call allocate_error(name, mem_path, istat, 1)
573  end if
574  !
575  ! -- update counter
576  nvalues_aint = nvalues_aint + 1
577  !
578  ! -- allocate memory type
579  allocate (mt)
580  !
581  ! -- set memory type
582  mt%intsclr => sclr
583  mt%element_size = i4b
584  mt%isize = 1
585  mt%name = name
586  mt%path = mem_path
587  write (mt%memtype, "(a)") 'INTEGER'
588  !
589  ! -- add memory type to the memory list
590  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_int1d()

subroutine memorymanagermodule::mem_allocate::allocate_int1d ( integer(i4b), dimension(:), intent(inout), pointer, contiguous  aint,
integer(i4b), intent(in)  nrow,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]aintvariable for allocation
[in]nrowinteger array number of rows
[in]namevariable name
[in]mem_pathpath where variable is stored

Definition at line 595 of file MemoryManager.f90.

596  integer(I4B), dimension(:), pointer, contiguous, intent(inout) :: aint !< variable for allocation
597  integer(I4B), intent(in) :: nrow !< integer array number of rows
598  character(len=*), intent(in) :: name !< variable name
599  character(len=*), intent(in) :: mem_path !< path where variable is stored
600  ! --local
601  type(MemoryType), pointer :: mt
602  integer(I4B) :: istat
603  integer(I4B) :: isize
604  ! -- code
605  !
606  ! -- check variable name length
607  call mem_check_length(name, lenvarname, "variable")
608  !
609  ! -- set isize
610  isize = nrow
611  !
612  ! -- allocate integer array
613  allocate (aint(nrow), stat=istat, errmsg=errmsg)
614  if (istat /= 0) then
615  call allocate_error(name, mem_path, istat, isize)
616  end if
617  !
618  ! -- update counter
619  nvalues_aint = nvalues_aint + isize
620  !
621  ! -- allocate memory type
622  allocate (mt)
623  !
624  ! -- set memory type
625  mt%aint1d => aint
626  mt%element_size = i4b
627  mt%isize = isize
628  mt%name = name
629  mt%path = mem_path
630  write (mt%memtype, "(a,' (',i0,')')") 'INTEGER', isize
631  !
632  ! -- add memory type to the memory list
633  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_int2d()

subroutine memorymanagermodule::mem_allocate::allocate_int2d ( integer(i4b), dimension(:, :), intent(inout), pointer, contiguous  aint,
integer(i4b), intent(in)  ncol,
integer(i4b), intent(in)  nrow,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]aintvariable for allocation
[in]ncolnumber of columns
[in]nrownumber of rows
[in]namevariable name
[in]mem_pathpath where variable is stored

Definition at line 638 of file MemoryManager.f90.

639  integer(I4B), dimension(:, :), pointer, contiguous, intent(inout) :: aint !< variable for allocation
640  integer(I4B), intent(in) :: ncol !< number of columns
641  integer(I4B), intent(in) :: nrow !< number of rows
642  character(len=*), intent(in) :: name !< variable name
643  character(len=*), intent(in) :: mem_path !< path where variable is stored
644  ! -- local
645  type(MemoryType), pointer :: mt
646  integer(I4B) :: istat
647  integer(I4B) :: isize
648  ! -- code
649  !
650  ! -- check the variable name length
651  call mem_check_length(name, lenvarname, "variable")
652  !
653  ! -- set isize
654  isize = ncol * nrow
655  !
656  ! -- allocate the integer array
657  allocate (aint(ncol, nrow), stat=istat, errmsg=errmsg)
658  if (istat /= 0) then
659  call allocate_error(name, mem_path, istat, isize)
660  end if
661  !
662  ! -- update the counter
663  nvalues_aint = nvalues_aint + isize
664  !
665  ! -- allocate memory type
666  allocate (mt)
667  !
668  ! -- set memory type
669  mt%aint2d => aint
670  mt%element_size = i4b
671  mt%isize = isize
672  mt%name = name
673  mt%path = mem_path
674  write (mt%memtype, "(a,' (',i0,',',i0,')')") 'INTEGER', ncol, nrow
675  !
676  ! -- add memory type to the memory list
677  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_int3d()

subroutine memorymanagermodule::mem_allocate::allocate_int3d ( integer(i4b), dimension(:, :, :), intent(inout), pointer, contiguous  aint,
integer(i4b), intent(in)  ncol,
integer(i4b), intent(in)  nrow,
integer(i4b), intent(in)  nlay,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]aintvariable for allocation
[in]ncolnumber of columns
[in]nrownumber of rows
[in]nlaynumber of layers
[in]namevariable name
[in]mem_pathpath where variable is stored

Definition at line 682 of file MemoryManager.f90.

683  integer(I4B), dimension(:, :, :), pointer, contiguous, intent(inout) :: aint !< variable for allocation
684  integer(I4B), intent(in) :: ncol !< number of columns
685  integer(I4B), intent(in) :: nrow !< number of rows
686  integer(I4B), intent(in) :: nlay !< number of layers
687  character(len=*), intent(in) :: name !< variable name
688  character(len=*), intent(in) :: mem_path !< path where variable is stored
689  ! -- local
690  type(MemoryType), pointer :: mt
691  integer(I4B) :: istat
692  integer(I4B) :: isize
693  ! -- code
694  !
695  ! -- check variable name length
696  call mem_check_length(name, lenvarname, "variable")
697  !
698  ! -- set isize
699  isize = ncol * nrow * nlay
700  !
701  ! -- allocate integer array
702  allocate (aint(ncol, nrow, nlay), stat=istat, errmsg=errmsg)
703  if (istat /= 0) then
704  call allocate_error(name, mem_path, istat, isize)
705  end if
706  !
707  ! -- update counter
708  nvalues_aint = nvalues_aint + isize
709  !
710  ! -- allocate memory type
711  allocate (mt)
712  !
713  ! -- set memory type
714  mt%aint3d => aint
715  mt%element_size = i4b
716  mt%isize = isize
717  mt%name = name
718  mt%path = mem_path
719  write (mt%memtype, "(a,' (',i0,',',i0,',',i0,')')") 'INTEGER', ncol, &
720  nrow, nlay
721  !
722  ! -- add memory type to the memory list
723  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_logical()

subroutine memorymanagermodule::mem_allocate::allocate_logical ( logical(lgp), intent(inout), pointer  sclr,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in,out]sclrvariable for allocation
[in]namevariable name
[in]mem_pathpath where the variable is stored

Definition at line 349 of file MemoryManager.f90.

350  logical(LGP), pointer, intent(inout) :: sclr !< variable for allocation
351  character(len=*), intent(in) :: name !< variable name
352  character(len=*), intent(in) :: mem_path !< path where the variable is stored
353  ! -- local
354  integer(I4B) :: istat
355  type(MemoryType), pointer :: mt
356  ! -- code
357  !
358  ! -- check variable name length
359  call mem_check_length(name, lenvarname, "variable")
360  !
361  ! -- allocate the logical scalar
362  allocate (sclr, stat=istat, errmsg=errmsg)
363  if (istat /= 0) then
364  call allocate_error(name, mem_path, istat, 1)
365  end if
366  !
367  ! -- update counter
368  nvalues_alogical = nvalues_alogical + 1
369  !
370  ! -- allocate memory type
371  allocate (mt)
372  !
373  ! -- set memory type
374  mt%logicalsclr => sclr
375  mt%element_size = lgp
376  mt%isize = 1
377  mt%name = name
378  mt%path = mem_path
379  write (mt%memtype, "(a)") 'LOGICAL'
380  !
381  ! -- add memory type to the memory list
382  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_str()

subroutine memorymanagermodule::mem_allocate::allocate_str ( character(len=ilen), intent(inout), pointer  sclr,
integer(i4b), intent(in)  ilen,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in]ilenstring length
[in,out]sclrvariable for allocation
[in]namevariable name
[in]mem_pathpath where the variable is stored

Definition at line 387 of file MemoryManager.f90.

388  integer(I4B), intent(in) :: ilen !< string length
389  character(len=ilen), pointer, intent(inout) :: sclr !< variable for allocation
390  character(len=*), intent(in) :: name !< variable name
391  character(len=*), intent(in) :: mem_path !< path where the variable is stored
392  ! -- local
393  integer(I4B) :: istat
394  type(MemoryType), pointer :: mt
395  ! -- format
396  ! -- code
397  !
398  ! -- make sure ilen is greater than 0
399  if (ilen < 1) then
400  errmsg = 'Programming error in allocate_str. ILEN must be greater than 0.'
401  call store_error(errmsg, terminate=.true.)
402  end if
403  !
404  ! -- check variable name length
405  call mem_check_length(name, lenvarname, "variable")
406  !
407  ! -- allocate string
408  allocate (character(len=ilen) :: sclr, stat=istat, errmsg=errmsg)
409  if (istat /= 0) then
410  call allocate_error(name, mem_path, istat, 1)
411  end if
412  !
413  ! -- set sclr to a empty string
414  sclr = ' '
415  !
416  ! -- update counter
417  nvalues_astr = nvalues_astr + ilen
418  !
419  ! -- allocate memory type
420  allocate (mt)
421  !
422  ! -- set memory type
423  mt%strsclr => sclr
424  mt%element_size = ilen
425  mt%isize = 1
426  mt%name = name
427  mt%path = mem_path
428  write (mt%memtype, "(a,' LEN=',i0)") 'STRING', ilen
429  !
430  ! -- add defined length string to the memory manager list
431  call memorystore%add(mt)
Here is the call graph for this function:

◆ allocate_str1d()

subroutine memorymanagermodule::mem_allocate::allocate_str1d ( character(len=ilen), dimension(:), intent(inout), pointer, contiguous  astr1d,
integer(i4b), intent(in)  ilen,
integer(i4b), intent(in)  nrow,
character(len=*), intent(in)  name,
character(len=*), intent(in)  mem_path 
)
private
Parameters
[in]ilenstring length
[in,out]astr1dvariable for allocation
[in]nrownumber of strings in array
[in]namevariable name
[in]mem_pathpath where the variable is stored

Definition at line 436 of file MemoryManager.f90.

437  integer(I4B), intent(in) :: ilen !< string length
438  character(len=ilen), dimension(:), &
439  pointer, contiguous, intent(inout) :: astr1d !< variable for allocation
440  integer(I4B), intent(in) :: nrow !< number of strings in array
441  character(len=*), intent(in) :: name !< variable name
442  character(len=*), intent(in) :: mem_path !< path where the variable is stored
443  ! -- local variables
444  type(MemoryType), pointer :: mt
445  character(len=ilen) :: string
446  integer(I4B) :: n
447  integer(I4B) :: istat
448  integer(I4B) :: isize
449  ! -- code
450  !
451  ! -- initialize string
452  string = ''
453  !
454  ! -- make sure ilen is greater than 0
455  if (ilen < 1) then
456  errmsg = 'Programming error in allocate_str1d. '// &
457  'ILEN must be greater than 0.'
458  call store_error(errmsg, terminate=.true.)
459  end if
460  !
461  ! -- check variable name length
462  call mem_check_length(name, lenvarname, "variable")
463  !
464  ! -- calculate isize
465  isize = nrow
466  !
467  ! -- allocate defined length string array
468  allocate (character(len=ilen) :: astr1d(nrow), stat=istat, errmsg=errmsg)
469  !
470  ! -- check for error condition
471  if (istat /= 0) then
472  call allocate_error(name, mem_path, istat, isize)
473  end if
474  !
475  ! -- fill deferred length string with empty string
476  do n = 1, nrow
477  astr1d(n) = string
478  end do
479  !
480  ! -- update counter
481  nvalues_astr = nvalues_astr + isize
482  !
483  ! -- allocate memory type
484  allocate (mt)
485  !
486  ! -- set memory type
487  mt%astr1d => astr1d
488  mt%element_size = ilen
489  mt%isize = isize
490  mt%name = name
491  mt%path = mem_path
492  write (mt%memtype, "(a,' LEN=',i0,' (',i0,')')") 'STRING', ilen, nrow
493  !
494  ! -- add deferred length character array to the memory manager list
495  call memorystore%add(mt)
Here is the call graph for this function:

The documentation for this interface was generated from the following file: