diff --git a/src/element.f90 b/src/element.f90 index 8fb7d4c8b..02f5fb762 100644 --- a/src/element.f90 +++ b/src/element.f90 @@ -753,7 +753,7 @@ subroutine tElement_init(self,elemType) self%cell = CELL10 end select - self%NcellNodesPerCell = NCELLNODEPERCELL(self%cellType) + self%NcellnodesPerCell = NCELLNODEPERCELL(self%cellType) select case(self%cellType) case(1) diff --git a/src/results.f90 b/src/results.f90 index 2498bf957..025f35602 100644 --- a/src/results.f90 +++ b/src/results.f90 @@ -296,21 +296,35 @@ end subroutine results_writeVectorDataset_real !-------------------------------------------------------------------------------------------------- !> @brief stores a tensor dataset in a group !-------------------------------------------------------------------------------------------------- -subroutine results_writeTensorDataset_real(group,dataset,label,description,SIunit) +subroutine results_writeTensorDataset_real(group,dataset,label,description,SIunit,transposed) character(len=*), intent(in) :: label,group,description character(len=*), intent(in), optional :: SIunit + logical, intent(in), optional :: transposed real(pReal), intent(in), dimension(:,:,:) :: dataset integer :: i + logical :: T integer(HID_T) :: groupHandle real(pReal), dimension(:,:,:), allocatable :: dataset_transposed + + if(present(transposed)) then + T = transposed + else + T = .true. + endif - allocate(dataset_transposed,mold=dataset) - do i=1,size(dataset,3) - dataset_transposed(1:3,1:3,i) = transpose(dataset(1:3,1:3,i)) - enddo + if(T) then + if(size(dataset_transposed,1) /= size(dataset_transposed,2)) & + call IO_error(0,ext_msg='transpose non-symmetric tensor') + allocate(dataset_transposed,mold=dataset) + do i=1,size(dataset_transposed,3) + dataset_transposed(:,:,i) = transpose(dataset(:,:,i)) + enddo + else + allocate(dataset_transposed,source=dataset) + endif groupHandle = results_openGroup(group)